jsr335相关内容

Java 8 接口方法中不允许“同步"的原因是什么?

在 Java 8 中,我可以轻松地编写: interface Interface1 {默认无效方法1(){同步(这个){//某物}}静态无效方法2(){同步(Interface1.class){//某物}}} 我将获得我也可以在类中使用的完整同步语义.但是,我不能在方法声明中使用 synchronized 修饰符: interface Interface2 {默认同步 void method ..
发布时间:2021-12-28 09:08:06 Java开发

为什么是“最终"?不允许在 Java 8 接口方法中使用?

Java 8 最有用的特性之一是接口上的新default 方法.引入它们主要有两个原因(可能还有其他原因): 提供实际的默认实现.示例:Iterator.remove() 允许 JDK API 演进.示例:可迭代.forEach() 从 API 设计者的角度来看,我希望能够在接口方法上使用其他修饰符,例如最终.这在添加便利方法时很有用,可以防止在实现类时发生“意外"覆盖: inte ..
发布时间:2021-12-28 08:41:53 Java开发

Java lambdas(JSR 335):为什么“消除对未绑定内部类构造函数引用的支持"?

在当前的JSR 335草案中,有提到更改日志 0.6.0的条目它“消除了对未绑定内部类构造函数引用的支持". 为说明起见,假设您有一个名为A的外部类和一​​个名为B的内部类,并且想要一个采用A并创建新的B实例的函数: Function foo = a -> a.new B(); 在0.6.0之前,您还可以使用构造函数引用语法执行相同的操作(甚至记录在Function ..
发布时间:2020-08-10 21:14:10 Java开发

为什么是“最终” Java 8接口方法不允许?

Java 8最有用的功能之一是接口上的新默认方法。基本上有两个原因(可能有其他原因)为什么会被引入: 提供实际的默认实现。示例: Iterator.remove() 允许JDK API演变。示例: Iterable.forEach() 从API设计师的角度来看,我本来希望能够在接口方法上使用其他修饰符,例如最终。这在添加便利方法时非常有用,可防止在实现类时出现“意外”覆盖: ..
发布时间:2018-11-27 12:25:06 Java开发