类型转换
java版实现
Object a = 10;
boolean b = a instanceof Integer;
Integer c = (Integer) a;
scala版实现
val a = 10
val b = a.isInstanceOf[Int]
val c = a.asInstanceOf[Int]
获取类的类型
java版实现
User u = JSON.parseObject("{\"name\":\"bob\",\"age\":20}", User.class);
scala版实现
val u = JSON.parseObject("{\"name\":\"bob\",\"age\":20}", classOf[User])
依赖fastjson实现对象反序列化
集合取数
在java中通过[]获取元素
String[] arrs = new String[]{"1", "2"};
System.out.println(arrs[0]);
List<String> lists = new ArrayList<>();
lists.add("hello");
lists.add("java");
System.out.println(lists.get(1));
在scala中通过()取数
val arrs = Array("1", "2")
println(arrs(0))
val lists = List("Hello", "Scala")
println(lists(1))
val map = Map("a" -> 1, "b" -> 2)
println(map("a"))
需要注意的是: 通过map(key)取数,若key不存在,则会抛出异常,这个在java中并不会抛出异常,只是返回null
java集合和scala集合互转
先看这样一段代码示例:
val list = new util.ArrayList[String]()
list.add("hello")
list.add("scala")
list.forEach(new Consumer[String] {
override def accept(t: String): Unit = {
println(t)
}
})
import scala.collection.JavaConverters._
list.asScala.foreach(println)
从示例来看,scala语法比及java简单太多了,要实现这种方案也很简单,只要引入
scala.collection.JavaConverters._
即可实现java集合和scala集合互转。
附一段来自官方的代码注释
The following conversions are supported via `asJava`, `asScala`
*
* - `scala.collection.Iterable` <=> `java.lang.Iterable`
* - `scala.collection.Iterator` <=> `java.util.Iterator`
* - `scala.collection.mutable.Buffer` <=> `java.util.List`
* - `scala.collection.mutable.Set` <=> `java.util.Set`
* - `scala.collection.mutable.Map` <=> `java.util.Map`
* - `scala.collection.mutable.concurrent.Map` <=> `java.util.concurrent.ConcurrentMap`
也就是说: 引入这个包后,就可以通过调用asJava方法,把scala集合对象转换成对应的java集合对象,调用asScala方法,把java集合对象转换成对应的scala集合对象。
异常捕获
java版实现:
String a = "10b";
try{
int b = Integer.parseInt(a);
System.out.println(b);
}
catch (Exception e){
System.out.println("trans int failed");
}
scala版实现
val a = "10b"
try{
val b = Integer.parseInt(a)
println(b)
}
catch {
case e: Exception => println("trans int failed")
}
switch语句
java版实现
String status = "starting";
int state = 0;
switch (status){
case "ready":
state = 0;
break;
case "starting":
state = 1;
break;
case "running":
state = 2;
break;
case "complete":
state = 3;
break;
default:
}
System.out.println(state);
scala版实现
val status = "starting"
var state = 0
status match {
case "ready" => state = 0
case "starting" => state = 1
case "running" => state = 2
case "complete" => state = 3
case _ => state = 0
}
println(state)