class A {
 private int x;
 public static void main(String args[]){
   new B();
 } class B{
    B(){
      System.out.println(x);
    }
 }
}
这个错在哪里?
放到eclipse里,显示的英文错误,我看不懂

解决方案 »

  1.   

    内部内实例化的时候要一个外部类的实例。
    所以new B();
    显然在一个静态方法里不成功。
      

  2.   


    class A { 
    private int x; 
    public static void main(String args[]){ 
      new A().new B(); 
    } class B{ 
        B(){ 
          System.out.println(x); 
        } 

    }
    你调用内部类得先生成外部类的对象
    或者用静态内部类class A { 
    private static int x; 
    public static void main(String args[]){ 
      new B(); 
    } static class B{ 
        B(){ 
          System.out.println(x); 
        } 

    }
      

  3.   

    System.out.println(x); //这里的x那里来的?不能无中生有啊.
      

  4.   

    或者这样:class A { 
    private static int x; 
    public static void main(String args[]){ 
      new B(); 
    } static class B{ 
        B(){ 
          System.out.println(x); 
        } 

      

  5.   

    bigbug9002也有被忽悠的时候
    哈哈
      

  6.   


    如果是静态内部类应该是 new A.B();
      

  7.   

    在A里不管内部类B是不是static都可以直接new B();但在A的外部就不一样非static是new A().new B();
    static是new A.B();不过既然定义成内部类 也就没有被外部访问的意义
      

  8.   

    你这样是把B作为A的内部类,所以可以把B类跟A类的main(String[] args)方法都看做是A的成员,那么在静态成员里面就不能够调用非静态成员。
    我是这样认为的! 呵呵 
      

  9.   

    内部类(inner class)之所以可以使用宿主类(enclosing class)的成员变量,是因为:内部类对象隐含地获得了宿主类的对象的引用,而这个宿主类对象的引用是如何传给内部类对象的呢?正是在内部类对象初始化的时候!因此在new一个内部类对象的时候必须指定一个宿主类的对象,如上面一些同学所说的:new A().new B().
      

  10.   


    new B();修改为new A().new B();
      

  11.   

    对于int 可以不初始化的 默认为0