在已创建的外部类对象上访问内部类方法

时间:2014-06-27 07:50:08

标签: java inner-classes nested-class

假设我有这样的课程:

class Outer { 
   public void getOuterValue() { } 

   class Inner { 
       public void getInnerValue() { }
   } 
} 

我知道我可以创建这个类的对象:

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();

但是假设我从其他方法中获取此对象:

void someMethodSomewhere(Outer o) { 
        // How do I call getInnerValue() here using o? 
} 

有没有办法在上面的场景中使用“o”调用“getInnerValue”方法?

请告诉我。

2 个答案:

答案 0 :(得分:1)

没有。您需要有一个Inner实例来调用方法。

外部类的实例是不够的(它会以相反的方式工作:内部类实例具有对外部类实例的引用)。

答案 1 :(得分:1)

void someMethodSomewhere(Outer o) { 
    // How do I call getInnerValue() here using o? 
} 

你不能。 getInnerValue()是Inner的一个方法。外面不是内在的,没有对内在的引用。当您递交o时,无法从中导航到内部的任何实例,因为没有与o相关联的实例。