可变长参数
object TestLog {
def main(args: Array[String]): Unit = {
test2("a")
test3("a")
}
def test2(args:Any*) = {
test(args)
}
def test3(args:Any*) = {
test(args: _*)
}
def test(args:Any*) = {
println(args.length)
var i = 0
while(i < args.length){
print(s"the $i arg:")
println(String.valueOf(args(i)))
i += 1
}
}
}
输出:
1
the 0 arg:WrappedArray(a)
1
the 0 arg:a
try-catch语法
def getIntConfig(config: util.Map[String,Object], key: String, defaultValue: Int): Int = {
try{
Integer.parseInt(String.valueOf(config.get(key)))
}
catch{
case e: Exception => {
defaultValue
}
}
}
scala没有自动装箱
def map = new util.HashMap[String,Object]()
map.put("a", 10) //编译失败
正解:
val map = new util.HashMap[String,Any]()
map.put("a", 10)
asInstanceOf使用
执行异常:
val map = new util.HashMap[String,Any]()
map.put("a", 10)
println(map.getOrDefault("a", "20").asInstanceOf[String])
泛型解析
def parseJson[T](node: FlowNode, cls: Class[T]): T = {
JSON.parseObject(JSON.toJSONString(node.getConfig, SerializerFeature.SortField), cls)
}