【发布时间】:2013-01-23 07:19:31
【问题描述】:
我声明了一个静态内部类,我在外部类的方法中创建了一个新实例。但是,我得到的结果表明每次在我的方法中都使用相同的内部类实例。 下面的例子,
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
}
}
有人可以帮忙解释为什么没有创建两个 Inner 类的实例吗?
另外,如果我从内部类中删除static,这种行为是否会改变?
【问题讨论】:
-
它确实在您的情况下创建了两个实例。我认为您确定没有两个实例的方式有问题。由于我们没有完整的代码,我还不能对此发表评论。
-
向内部类添加“静态”意味着您可以在外部类之外实例化它。你能详细说明你得到什么结果“建议在我的方法中每次都使用同一个 Inner 类的实例”?
-
引用的代码包含语法错误,因此它必须与编译的任何内容有很大不同。请发布重现您遇到的问题的代码。
-
我的错,实际上是我的实际代码中
cache之前的静态关键字“持久化”了它。上面编写的代码是对我的实际代码的额外简化。感谢所有的帮助。
标签: java nested-class