48得票4回答
Java类名的大小写敏感性

如果在不同的目录中编写了两个大小写不敏感名称相同的公共Java类,则这两个类在运行时都无法使用。(我在Windows、Mac和Linux上测试了几个HotSpot JVM版本。如果有其他JVM可以同时使用它们,我也不会感到惊讶。)例如,如果我创建了一个名为a和一个名为A的类,如下所示: //...

47得票4回答
匿名内部类显示错误的修饰符

据我理解,以下代码应该输出true。 但是当我运行这段代码时,它却输出false。 根据Java文档中匿名类 15.9.5的描述: 一个匿名类总是隐式final的。 public class Test { public static void main(String arg...

45得票1回答
JLS、JSR和JEP之间的区别(或关系)是什么?

JLS - Java语言规范 JSR - Java规范请求。描述向Java平台添加新功能和技术的提案规范文件。 JEP - JDK增强提案 这三者之间有何区别(或联系)?

38得票3回答
每个内部类都需要一个封闭实例,这是真的吗?

术语“内部类”通常被认为是“需要封闭实例的嵌套类”。然而,JLS如下所述: 8.1.3.内部类和封闭实例 [...] 内部类包括本地(§14.3)、匿名(§15.9.5)和非静态成员类(§8.5)。 [...] 在静态上下文中声明的内部类的实例没有词法封闭实例。 此外, 15.9...

36得票2回答
Java中的“qualified this”构造是什么意思?

在Effective Java中的“Item 22:静态成员类优于非静态成员类”一节中,Josh Bloch说: 每个非静态成员类的实例都隐式关联着其包含类的一个封闭实例。在非静态成员类的实例方法中,您可以使用限定this结构调用封闭实例的方法或获取对封闭实例的引用。 他所说的“限定t...

35得票9回答
为什么 Integer.MAX_VALUE + 1 == Integer.MIN_VALUE?

System.out.println(Integer.MAX_VALUE + 1 == Integer.MIN_VALUE); 这段代码输出的结果是true。 我理解在Java中int类型是32位的,不能超过231-1,但我不明白为什么将1加到MAX_VALUE上会导致结果为MIN_VAL...

33得票5回答
Java中的in运算符

我已经再说一百万遍了,我希望在Java中能够使用类似于SQL中的IN操作符的IN操作符。 它可以被实现为编译器语法糖。 所以这样: if (value in (a, b, c)) { } else if (value in (d, e)) { } 如果能实现这个功能就太棒了。实际上,上述...

33得票2回答
在Java中,`1/0`是一个常量表达式吗?

据我理解,根据Java 8 JLS文档(链接),表达式 (1/0) 被认为是常量表达式,但是当我尝试使用OpenJDK 8编译以下程序时,出现了错误。public class Switch { public static void main(String[] args) { ...

32得票1回答
Java 8中Consumer/Function Lambda产生的歧义问题

我有一个重载的方法,分别接受一个 Consumer 和一个 Function 对象,并返回与相应 Consumer/Function 匹配的泛型类型。我认为这应该没问题,但是当我尝试使用 lambda 表达式调用其中任一方法时,会出现错误,指示对该方法的引用不明确。 根据我阅读的JLS §1...

32得票3回答
并发代码中赋值运算符的返回值

给定以下类: class Foo { public volatile int number; public int method1() { int ret = number = 1; return ret; } public int method2() {...