19得票3回答
Java 语言规范第四版何时可用?

现在 JDK 7 开发者预览版已经发布,也许是时候发布新的 JLS(Java 语言规范)了。毕竟,虽然只有一些小变化,但是该语言确实有所变动。 我目前还没有找到任何相关信息。新的 JLS 将何时发布,以及从哪里获取它?

18得票1回答
是否可以为另一种注解类型的注解字段指定默认值?

public @interface InnerAnnotation { String value() default "hello"; } public @interface OuterAnnotation { InnerAnnotation value() default ...

18得票3回答
为什么在这种情况下返回 null 对于原始类型有效?

这段不美观的代码虽然编译通过,但是如果s == null会抛出NPE异常。 public static boolean isNullOrEmpty(String s) { return s != null ? s.isEmpty() : null; } 虽然这样并没有如预期那样:...

16得票3回答
在子类构造函数中调用getClass()方法总是安全的吗?

关于类加载的一篇文章指出,getClass()方法不应该在构造函数中调用,因为: 对象初始化仅在构造函数代码退出时完成。 他们给出的例子是: public class MyClassLoader extends ClassLoader{ public MyClassLoade...

16得票1回答
Java SE 11 - Java语言规范中类型转换的新案例

Java SE 11的JLS §5.2包含一些新的类型转换情况,而Java 8的JLS没有,参见列表中的第4项和第5项: 赋值上下文允许使用以下之一: 恒等转换 扩宽原始类型转换 扩宽引用类型转换 扩宽引用类型转换后跟拆箱转换 扩宽引用类型转换后跟拆箱转换,然后再跟扩宽原始类型转换 装箱...

15得票2回答
final字段的初始化顺序

考虑这两个类:public abstract class Bar { protected Bar() { System.out.println(getValue()); } protected abstract int getValue(); } p...

15得票4回答
Java final字段:当前JLS是否可能存在“污点”行为?

我目前正在尝试理解这个JLS关于final字段的部分。 为了更好地理解JLS中的文本,我也在阅读Jeremy Manson(JMM的创建者之一)的Java内存模型。 该论文包含了让我感兴趣的示例:如果一个具有final字段的对象o在构造函数完成之前不正确地向另一个线程t公开两次: 首先,...

15得票6回答
为什么一个类不能扩展枚举?

我想知道为什么在Java语言中,一个class不能扩展一个enum。 我不是在讨论一个enum扩展另一个enum的情况(这是不可能的,因为Java没有多重继承,并且enum隐式地扩展了java.lang.Enum),而是一个class扩展一个enum以添加额外的方法,而不是额外的枚举值。 ...

15得票2回答
Java8中的重载模糊 - ECJ或javac哪个是正确的?

我有以下的类:import java.util.HashSet; import java.util.List; public class OverloadTest<T> extends HashSet<List<T>> { private stati...

14得票3回答
为什么对于隐藏的静态方法,要强制执行返回类型协变?

由于在Child中的staticMethod方法的String返回类型,导致此代码无法编译。class Parent { static void staticMethod() { } } class Child extends Parent { static ...