可能重复:
Why does Java prohibit static fields in inner classes?为什么只有Java中的静态内部类具有静态成员?
让我们来看看在Java中,下面的代码片段。它只是在Outer
类中声明的Inner
类中总结了两个数字,并且按预期工作得很好。
package staticfields;
final class Outer
{
final public static class Inner
{
private static int x;
private static int y;
public Inner(int x, int y)
{
Inner.x=x;
Inner.y=y;
}
public void sum()
{
System.out.println(x+y);
}
}
}
final public class Main
{
public static void main(String[] args)
{
new Outer.Inner(5, 10).sum();
}
}
当我试图从Inner
类中删除静态关键字,它会发出指示内部类不能有静态声明编译时错误意味着在静态字段(x和y)在内部类中声明不起作用,如果它是非静态的。
为什么只有Java中的静态内部类具有静态成员而非静态内部类不是?
http://stackoverflow.com/questions/1953530/why-does-java-prohibit-static-fields-in-inner-classes第二个答案更好:http://stackoverflow.com/a/1953570/ 738746 – 2011-12-20 00:05:22
@glowcoder :)从内部类中删除static关键字并将其设置为非静态类时,会发出该错误。你有没有尝试这样做? – Lion 2011-12-20 00:06:10
@Lion是的,问题在于我在那个目录中有另一个名为Outer的类,所以我称这个为OuterTest,但仍在编译Outer :) Whoopsie :) – corsiKa 2011-12-20 00:08:19