Questions tagged «jsr335»

5
为什么Java 8接口方法中不允许“最终”?
Java 8最有用的功能之一是default接口上的新方法。引入它们的原因基本上有两个(可能还有其他原因): 提供实际的默认实现。例:Iterator.remove() 允许JDK API演进。例:Iterable.forEach() 从API设计人员的角度来看,我希望能够在接口方法上使用其他修饰符,例如final。在添加便捷方法时,这将很有用,以防止在实现类时“意外”覆盖: interface Sender { // Convenience method to send an empty message default final void send() { send(null); } // Implementations should only implement this method void send(String message); } 如果Sender已经上过课,以上是已经很普遍的做法: abstract class Sender { // Convenience method to send an empty message final void …

2
Java 8接口方法中不允许“同步”的原因是什么?
在Java 8中,我可以轻松地编写: interface Interface1 { default void method1() { synchronized (this) { // Something } } static void method2() { synchronized (Interface1.class) { // Something } } } 我将获得在类中也可以使用的完整同步语义。但是,我不能synchronized在方法声明上使用修饰符: interface Interface2 { default synchronized void method1() { // ^^^^^^^^^^^^ Modifier 'synchronized' not allowed here } static synchronized void method2() { …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.