我有一个类A(里面有一个内部类B)在另一个类C中要引用这个内部类B的声明,如下所示:
------------------------------------------------------------------------------------
文件A.java:
public class A {
    class B {
        private String name;
        //getter and setter;
    }    public List getBlist(){
        List list = new ArrayList();
        //将一些B的对象放在List中        return list;
    }
}文件C.java:
public class C {
    .................    public test() {
        List list = (new A()).getBList();
        Iterator it = list.interator();
        while(it.hasNext()) {
            System.out.println((???????)it.next.getName);
        }
    }
}
-----------------------------------------------------------------------------------
这个???????应该是内部类B的类型声明,请问这个???????应该怎么写???
多谢!!!

解决方案 »

  1.   

    有个问题:一般内部类都是private的
    不需要类外可见
      

  2.   

    你的 class B 时 包内友好的访问范围,
    所以只有当 C 和 A 在同一个包内时才可以访问。public class C {  public static void main(String[] args){
             A a  =new A();
             A.B b = a.new B(){public String toString(){new Exception().printStackTrace()}; // 有这个来看堆栈 toString 一下。          System.out.println("B 和 A 到底有什么关系呢,请 toString 一下查看 调用堆栈、其中你能看到一个 access 这样的东西,这就是关键。" + b.toString());    //如果你的 class B 是   static class B 
        // 则可以  A.B b = new A.B(); 非 static 的要 A a = new A(); A.B b= a.new B();         
      }
    }
      

  3.   

    从设计的角度,如果C要直接引用到B,那么就不应该把B设计成A的内部类。
    这样违反了设计原则。
      

  4.   

    从设计的角度,如果C要直接引用到B,那么就不应该把B设计成A的内部类。
    这样违反了设计原则。
      

  5.   

    将class B声明为public,然后用A.B
      

  6.   

    新人,跟贴问一下:
    像这种情况: 在没用建立工程的情况下,用JBulider怎么样编译就是怎么单独编译几个相互有关联的程序;
    或者就是不行
      

  7.   

    对不起,我的文件写错了,能不能重写一下:
    ------------------------------------------------------------
    文件A.java:
    class B {
        private String name;
        //getter and setter;
    }public class A {
        public List getBlist(){
            List list = new ArrayList();
            //将一些B的对象放在List中        return list;
        }
    }文件C.java:
    public class C {
        .................    public test() {
            List list = (new A()).getBList();
            Iterator it = list.interator();
            while(it.hasNext()) {
                System.out.println((???????)it.next.getName);
            }
        }
    }
    -----------------------------------------------------------------------------------
    这个???????应该是内部类B的类型声明,请问这个???????应该怎么写???
    多谢!!!