2014-09-02 45 views
2

是否可以访问displayMsg()函数中的getVal()函数? 我试图用函数getVal()创建一个annonymous内部类,我想调用AnonymousClass的displayMsg()函数内的getVal()函数。是否有可能访问displayMsg()函数内的getVal()函数?

import java.io.*; 
class AnonymousClass { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     displayMsg(new AnonymouseEx(10){ 
      public int getVal(){ 
       return getValue(); 
      } 
     }); 

    } 
    static void displayMsg(AnonymouseEx obj) 
    { 

    } 
} 
class AnonymouseEx{ 
    private int i=0; 
    AnonymouseEx(int val) 
    { 
     i = val; 
    } 
    int getValue() 
    { 
     return i; 
    } 
} 
+0

是的,这是可能的。你测试过了吗? – 2014-09-02 07:18:59

+0

是的,但我可以访问displayMsg()函数中的getVal()它给我一个错误。如何实现? – 2014-09-02 09:03:10

回答

0

不,这是不可能的。

displayMsg期望一类AnonymouseEx类型的不具有的方法称为getVal。由于您只是将此函数添加到匿名子类中,其他子类可能没有此函数,因此displayMsg无法使用它。

如果您想给匿名类中使用的自定义实现,您可以覆盖AnonymouseEx中的函数,或者为其提供一个子类必须实现的抽象方法。使用抽象方法(或接口)最为常见,例如Java使用的Listener接口。

+0

谢谢Thirler.It真的帮助.. – 2014-09-02 10:23:38

相关问题