关于对Java语法糖的理解

Posted by Futari on 2025-02-05
Estimated Reading Time 1 Minutes
Words 74 In Total
Viewed Times

避免编译报错,所以可以理解为什么泛型重载是不能编译的了吧,因为多实例映射到同一Class中,所以泛型,类里的静态变量对多个实例来说是共享的

  • 自动装箱/拆箱,调用包装器的valueOf方法实现的,都是隐式的
  • 可变入参———>隐式转数组
  • 枚举 :当我们使用enmu来定义一个枚举类型的时候,编译器会自动帮我们创建一个final类型的类继承Enum类,所以枚举类型不能被继承,还能创建独有的特性,语法糖就是封装,仅仅是编译时的概念
  • 内部类 :也就是分别编译和源代码合并(如果把两个class反编译得到的还是一个源文件)
  • 条件编译,也就是有的源代码不会编译,但是Java的条件编译特性很弱,原因是只支持显式的常量条件优化

举例子:其实也可以理解成Java编译器优化

-

  • 断言 默认Assert是不在编译阶段生效的,可以配置-enableassertions会启用断言检查,断言其实就是if else,满足条件则true,false则会抛出AssertError异常
  • 字面值,JDK1.7的时候,数字字面值就可以在数字中任意假的下划线_,编译时会自动去除下划线,目的是为了数字在源代码阶段更直观 10_000 = 10000
  • for-each :for和迭代器
  • try-with-resources语句,其实就是封装了对try catch finally的资源处理封装
  • 最经典的,Lambda表达式:
所以,lambda表达式的实现其实是依赖了一些底层的api,在编译阶段,编译器会把lambda表达式进行解糖,转换成调用内部api的方式,lambda$main$1和lambda$main$0等等

如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !