我有一个有另一个static
内部类的类:
class A {
private List<String> list;
public static class B {
// I want to update list here without making list as static
// I don't have an object for outer class
}
}
Run Code Online (Sandbox Code Playgroud)
从其他答案可以看出,你需要一个非静态的内部类来做到这一点.
如果你真的不能使你的内部类非静态,那么你可以在外部类中添加所需的getter和setter方法,并通过从内部静态类内部创建外部类的实例来访问它们:
public class A {
private List<String> list = new ArrayList<String>();
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public static class B {
// i want to update list here without making list as static
void updList() {
A a = new A();
a.setList(someOtherList);
System.out.println(a.getList());
}
}
}
Run Code Online (Sandbox Code Playgroud)
不,您需要一个非static
内部类来执行此操作。
的
static
关键字可能修改成员类型的声明C
一个非内部类或接口的主体内T
。它的作用是声明它C
不是内部类。正如的静态方法T
在其体内没有T的当前实例,C
也没有的当前实例一样T
,它也不具有任何词法包围的实例。如果一个
static
类包含封闭类的非静态成员的用法,则是编译时错误。
归档时间: |
|
查看次数: |
19469 次 |
最近记录: |