[英]Nested class(static inner) lifetime/scope
我声明了一个静态内部类,该类将在外部类的方法中创建一个新实例。 但是,我得到的结果是建议在我的方法中每次都使用相同的Inner类实例。 下面的例子
public class Outer{
public method m(){
Inner n = new Inner(); //Creating local instance of Nested class
n.something();
}
public static class Inner{
Map<K,V> cache = new Map<K,V>();
void something(){
//use and update cache;
}
}
}
public Test{
public static void main(String a[]){
Outer o = new Outer();
o.m();
o.m(); //cache was still available
}
}
有人可以帮忙为什么不创建两个内部类实例吗?
另外,如果我从内部类中删除static
,这种行为是否应该改变?
每个外部封闭类实例只能实例化一次static
inner
类。由于您只有一个Outer o = new Outer();
外部实例om();
将调用内部类的相同实例。 创建两个这样的实例
Outer o = new Outer();
o.m();
Outer o1 = new Outer();
o1.m(); // will create new instance of inner
关于static
关键字
嵌套类可以是:静态和非静态。 声明为静态的嵌套类是s静态嵌套类。 非静态嵌套类称为内部类。
静态嵌套类没有对嵌套实例的引用,因此静态嵌套类无法访问嵌套该类的实例的非静态方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.