【问题标题】:Is it possible to access getVal() function inside displayMsg() function?是否可以在 displayMsg() 函数中访问 getVal() 函数?
【发布时间】:2014-09-02 07:17:39
【问题描述】:

是否可以访问 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;
    }
}

【问题讨论】:

  • 是的,这是可能的。你测试过吗?
  • 是的,但我可以在 displayMsg() 函数中访问 getVal(),它给了我一个错误。如何实现?

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


【解决方案1】:

不,这是不可能的。

displayMsg 需要一个 AnonymouseEx 类型的类,它没有名为 getVal 的方法。因为你只是在你的匿名子类中添加了这个功能,其他子类可能没有这个功能,所以displayMsg不能使用它。

如果你想给一个匿名类中使用的自定义实现,你已经覆盖了AnonymouseEx 中的一个函数,或者给它一个子类必须实现的抽象方法。使用抽象方法(或接口)是最常见的,例如在 Java 使用的Listener 接口中。

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2017-08-19
    相关资源
    最近更新 更多