[Java] [Syntactic sugar]
- 语法糖:指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。 语法糖让程序更加简洁,有更高的可读性。
- 本篇介绍java中常用的语法糖
泛型
- 泛型,即“参数化类型”。
- Java的泛型是通过类型擦除(type erasure)实现的。
- 伪泛型:在编译期间,所有的泛型信息都会被擦除掉。 [Java中的泛型基本上都是在编译器这个层次来实现的。]
- eg: 定义 List<Object> or List<String> 对JVM而言都只能看到List。
System.out.println(new ArrayList<String>().getClass() == new ArrayList<Integer>().getClass()); // return true;
- Java编译器会在编译时尽可能的发现可能出错的地方,但是仍然无法避免在运行时刻出现类型转换异常的情况。
- 类型变量被擦除(crased),并使用其限定类型(无限定的变量用Object)替换。 [原始类型raw type]
- 自动类型转换:虽然在编译期间,变量类型都被擦除,取代以原始类型。但在return之前,会根据泛型变量进行强制转换。
- 编译后得到的代码如下所示
Map<String, String> map = new HashMap<>(); // Map map = new HashMap(); 类型擦除 map.put("a", "mapa"); String h = map.get("a"); // String h = (String)map.get("a"); 强制转换
注解
auto-boxing