类A有个内部类B;
类C调用B方法;
在我JAVAC A.JAVA成功后,接着 JAVAC C.JAVA ;这时cmd提示C中找不到B;
Why???????????????????

解决方案 »

  1.   

    我试过了,没一点问题。
    public class A {
        
        public static class C {
            
        }
    }
    public class B {
        
        private static A.C ac = new A.C();
        
        public static void main(String[] args) {
            System.out.println("ac is " + ac.getClass());
        }
    }
      

  2.   

    YidingHe 老大 我的那个内部类不是static的 就是一个普通的内部类;
    您再试试?一定报错的
      

  3.   

    YidingHe 老大 我的那个内部类不是static的 就是一个普通的内部类; 
    您再试试?一定报错的
      

  4.   

    现在内部类不是 static 了,还是没问题呀:
    public class A {
        
        public C cc = new C();
        
        public class C {
            
        }
    }
    public class B {
        
        public static void main(String[] args) {
            A a = new A();
            System.out.println("a.cc is " + a.cc.getClass());
        }
    }
      

  5.   

    我的不是a.cc.getClass();
    而是cc.getClass();
    一定要加a.吗?不加不是也可以吗?
      

  6.   

    回帖是一种美德!每天回帖即可获得 10 分可用分!这么简单的问题来CSDN
    回去问下你老师就行,自己换台机器!
      

  7.   

    YidingHe 您说的很精辟 ,但是我想知道我这个例子中的.class文件是从光盘上拷下来的 ,和它对应的.java文件中就没有创建A的实例?
    您知道这是怎么回事吗?能帮我分析分析吗?谢谢
      

  8.   

    sese1990 -》小顾同志 还是自己先找到工作再说别人吧
      

  9.   

    内部类对同一包中的其他类是不可见的,也就是说你只能通过外部类A来访问B,而C是访问不到B的
      

  10.   

    给LZ个例子,LZ自己体会吧
    class A {
        A() {
            System.out.println("outer class");
        }
        class B {
          B() {
              System.out.println("inner class");
          }
        };
    }class C {
        C() {
            A a = new A();
            A.B b = a.new B(); //内部类B为非静态,只能用A的实例去创建
            A.B bb = new A().new B(); //new A的实例处理,如果B是静态的话,可以直接用new A.B()
        }
    }