Rog*_*des 4 java inner-classes
我在使用Java中的嵌套类时遇到了麻烦,有谁知道为什么Java不允许我这样做?
public class A{
private class B{
public B(){
System.out.println("class B");
}
}
public static void main(String[] args){
A a = new A();
B b = new B();
}
}
Run Code Online (Sandbox Code Playgroud)
因为您尝试从静态方法访问非静态内部类.
第一个解决方案是将你的内部类B改为static:
public class A{
private static class B {
public B() {
System.out.println("class B");
}
}
public static void main(String[] args){
A a = new A();
B b = new B();
}
}
Run Code Online (Sandbox Code Playgroud)
一个static内部类是从任何地方访问,但非静态的,需要你的容器类的一个实例.
另一种解决方案是:
A a = new A();
B b = a.new B();
Run Code Online (Sandbox Code Playgroud)
这将使您更好地理解内部类如何在Java中工作:http://www.javaworld.com/article/2077411/core-java/inner-classes.html
A a = new A();
B b = a.new B();
Run Code Online (Sandbox Code Playgroud)
可以解决你的问题
你使用私有内部类.你怎么能在A类之外获得实例?
public class JustForShow {
public class JustTry{
public JustTry() {
System.out.println("Initialized");
}
}
public static void main(String[] args) {
JustForShow jfs = new JustForShow();
JustTry jt = jfs.new JustTry();
}
}
Run Code Online (Sandbox Code Playgroud)