static
内部类中的变量:内部类不能包含static
字段。它不能包含static
成员,因为在哪里分配成员会有问题static
。内部类与外部类相连。我明白为什么它不包含static
成员,但内部类可以包含static
常量。为什么?是不是经过特殊处理?它在特殊堆上吗?仍然是静态成员,但是常量,所以要特殊处理?它可以包含:“final static int x”,但不能包含“static int x”。
我想知道为什么本地类中使用的方法的变量应该是
final
. 我是说:public void function1() { final int x; // value of x, which is used in class A have to be final class A { void function2() { //body of function } } }
答案是:变量x id 复制到A 类中。不能更改,因为这样就出现了不一致。那么为什么 Java 的架构师没有创建不复制变量 x 的语言呢?变量的地址将被传递,然后变量 x 将被更改而不会出现不一致。有人可以举个例子并解释一下吗?
或与同步有关的问题。两个变量应该相同,但是如果我们超出范围怎么办?其中一个变量不存在,那么同步呢?
编辑:为什么会这样:
interface In
{
void f1();
}
class A
{
int variable = 3;
In g()
{
return new In()
{
@Override
public void f1()
{
variable = 6;
System.out.println(variable);
}
};
}
}
public static void main(String[] args)
{
In in1;
{
A a = new A();
in1 = a.g();
}
in1.f1(); //class A does not exists any more, field 'variable' is changed, despite it does not exist
}
为什么没有同步问题?