我对final
和static
关键字的含义感到困惑。这是因为,据我所知,static
在课堂上创建了一个单独的记忆。一个static
字段只能从static
方法访问。那么,为什么当我在Test构造函数中声明list
时没有错误?如何使用final来实现静态?
首先问:
public Test() {
list = new ArrayList();
list.add("foo");
}
当我宣布
public class Test {
private static List list;
public Test() {
list = new ArrayList();
list.add("foo");
}
public static void main(String [] args) throws IOException{
list = new ArrayList();
Test t = new Test();
t.list.add("add");
System.out.print("Hello " + t.list);
}
}
它工作正常。但是当我加final
与static
,它不起作用。
第二个问题:
public class Test {
private static final List list;
public Test() {
list = new ArrayList();
list.add("foo");
}
public static void main(String [] args) throws IOException{
list = new ArrayList();
Test t = new Test();
t.list.add("add");
System.out.print("Hello" + t.list);
}
}
请解释它是如何工作的内部。
你能细说正是你想在你的第二个问题已经解释? – bleistift2
之前加入最后的工作。在工作最后它不工作。第二个问题为什么它不工作和内部机制?@ bleistift2 –
你从哪里得到“一个静态字段只能从静态方法访问”。这是不正确的。事实是,您无法从静态方法访问非静态字段。所有其他组合都是允许的。 – Henry