Java 内部类应该在哪里实例化?
我见过两种实例化内部类的方法。比如说Java 内部类应该在哪里实例化?,java,inner-classes,Java,Inner Classes,我见过两种实例化内部类的方法。比如说 class OuterClass{ private int x = 23; class InnerClass{ public void printX(){ System.out.println(x); } public void printStuff(){ System.out.println("This is an inner class me
class OuterClass{
private int x = 23;
class InnerClass{
public void printX(){
System.out.println(x);
}
public void printStuff(){
System.out.println("This is an inner class method");
}
}
}
public class TestMain321{
public static void main(String[] args){
OuterClass o = new OuterClass();
OuterClass.InnerClass i = o.new InnerClass();
i.printX();
}
}
及
在第一个示例中,我可以直接调用内部类方法,因为我正在main()中实例化内部类
不同之处在于,在第二个示例中,我直接在外部类中实例化内部类,因此在后面的main方法中,我不能直接调用内部类的方法,因为它不知道引用。我必须创建一个外部类方法来调用内部类方法,例如,请参见外部类中的innerMethod()
public void innerMethod(){
i.printX();
}
有没有其他理由让我用一种方法来实现另一种方法?是否有关于如何做到这一点的最佳实践 您的内部类应该始终是私有的,以防止外部类之外的外部访问。 这在和中提到
如果您的内部类需要公开,请认真考虑将其本身作为正常类,而不是内部类。 我觉得第二条路更好。添加私有构造函数以防止第一种方法。@StanislavL根据您的经验有什么具体原因吗?在外部类中有更多的控制,以防止不正确的使用
OuterClass.InnerClass i = o.new InnerClass();
i.printX();
public void innerMethod(){
i.printX();
}