代码如下
public class Test
{
    class A
    {}
    public static void main(String[] argv)  
    {Test test = new Test();}
}
public class Test
{
    class A
    {}
    public static void main(String[] argv)  
    { A a = new A();}
}为什么上面的代码能编译通过,而下面的代码不可以,谁能告诉我,谢谢大侠们!

解决方案 »

  1.   

    public class Test
    {
    class A
    {}
    public static void main(String[] argv)

    Test t=new Test();
    A a = t.new A();}
    }要改成这样。
      

  2.   

    public class Test {
    static class A {
    } public static void main(String[] argv) {
    // Test t = new Test();
    // A a = t.new A();
    A b = new A();
    }
    }
    也可以改成这个样子,这个其实和内隐类没有太多关系。主要是main方法是静态的,而你构造对象a时用到的构造方法也应该为静态的否则不能访问。所以有两种解决方法,楼上的一种,我的算一种。呵呵
      

  3.   

    public class Test
    {
        class A
        {}
        public static void main(String[] argv)  
        { 
           Test test = new Test();
           Test.A a = test.new A(); //从外部类实力化内部类   Test.A aa= new Test.new A();//连续写
         }
    }
     如果内部类没有与外部类直接关联,则无法存在!!!
      

  4.   

    twenty_three(花非花)
    ------------
    您把内部类变为顶级嵌套类了:
    和常规类没有区别了!
    public class Test {
    static class A {
    } public static void main(String[] argv) {
           Test.A a = new Test.A();//注意和非静态的内部类少了一个new关键字呵呵
    }
    }
      

  5.   

    怎么问了又问啊?http://www.ourexam.com/Article/sun/xsrm/jcrm/200509/29403.html去看一下为什么创建 非静态内部类对象时,一定要先创建相应的外部类对象