是否可以在displayMsg()函数中访问getVal()函数?

时间:2014-09-02 07:17:40

标签: java inner-classes anonymous-inner-class

是否可以访问displayMsg()函数中的getVal()函数?    我试图用函数getVal()创建一个匿名内部类,我想在AnonymousClass的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;
    }
}

1 个答案:

答案 0 :(得分:0)

不,这是不可能的。

displayMsg要求类AnonymouseEx的类没有名为getVal的方法。因为您只将此函数添加到匿名子类,所以其他子类可能没有此函数,因此displayMsg无法使用它。

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