212得票14回答
为什么 x == (x = y) 不同于 (x = y) == x?

考虑以下示例: class Quirky { public static void main(String[] args) { int x = 1; int y = 3; System.out.println(x == (x = y)...

103得票2回答
有效终态 vs 终态 - 不同的行为

到目前为止,我认为 effectively final 和 final 或多或少是等价的,并且JLS在实际行为上会将它们视为相似甚至相同。然后我发现了这种人为制造的情况:final int a = 97; System.out.println(true ? a : 'c'); // outpu...

92得票15回答
为什么接口中不能有静态方法,但可以有静态字段和内部类?[Java8之前]

在这里,有一些关于为什么不能在接口中定义静态方法的问题,但是它们都没有涉及到一个基本的不一致性:为什么你可以在接口中定义静态字段和静态内部类型,但不能定义静态方法呢? 静态内部类型可能不是一个公正的比较,因为那只是生成一个新类的语法糖,但为什么允许字段而不允许方法呢? 反对在接口中定义静态...

78得票1回答
Java中参数执行顺序的保证是什么?

在C中给定以下函数调用:fooFunc( barFunc(), bazFunc() ); barFunc()和BazFunc()的执行顺序没有指定,因此在C中可能会在调用bazFunc()之前调用barFunc()或在调用barFunc()之前调用bazFunc()。 Java是否指定函数参...

75得票4回答
如果你在一个类的子类中覆盖一个字段,那么子类就会有两个同名但类型不同的字段?

我有三个类:public class Alpha { public Number number; } public class Beta extends Alpha { public String number; } public class Gama extends Be...

73得票4回答
为什么我们无法通过未初始化的本地变量访问静态内容?

看一下下面的代码:class Foo{ public static int x = 1; } class Bar{ public static void main(String[] args) { Foo foo; System.out...

72得票9回答
如何创建一个已知类型的类字面值:Class <List<String>>

请看以下示例:public Class&lt;List&lt;String&gt;&gt; getObjectType() { // what can I return here? } 我应该返回哪个类字面表达式才能满足泛型并通过编译?List.class会报错,List.&lt;St...

65得票4回答
为什么Java在编译时绑定变量?

请考虑以下示例代码class MyClass { public String var = "base"; public void printVar() { System.out.println(var); } } class MyDerivedCla...

53得票6回答
在Java接口中,对于常量来说,“public static final”是否多余?

这段代码:interface Config { int MAX_CONN = 20; } 编译并按照我的预期运行。看起来这与以下内容相同:interface Config { public static final int MAX_CONN = 20; } 在Java接口中,使...

49得票3回答
Lambda表达式和方法重载疑惑

好的,方法重载是件坏事™。既然这已经解决了,现在假设我实际上想像这样重载一个方法: static void run(Consumer&lt;Integer&gt; consumer) { System.out.println("consumer"); } static void r...