【问题标题】:How to invoke anonymous inner classes's methods?如何调用匿名内部类的方法?
【发布时间】:2012-11-06 12:27:51
【问题描述】:

我了解此代码不合法​​:

class Popcorn {
    public void pop() {
        System.out.println("popcorn");
    }
}

class Food {
    Popcorn p = new Popcorn() {
        public void sizzle() {
            System.out.println("anonymous sizzling popcorn");
        }
        public void pop() {
            System.out.println("anonymous popcorn");
        }
    };
    public void popIt() {
        p.pop(); // OK, Popcorn has a pop() method
        p.sizzle(); // Not Legal! Popcorn does not have sizzle()
    }
}

那么调用 sizzle 方法的方法是什么?

【问题讨论】:

  • 为爆米花添加滋滋声,别无他法
  • 我最初的反应是问为什么你会通过向匿名类添加额外的公共方法来实现
  • new Popcorn() { ... }.sizzle();
  • @TomHawtin-tackline 这就是我想要的。因为如果你不能调用该方法,这是一个不好的例子,它来自 Kathy bates 的官方 OCJP 学习指南

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


【解决方案1】:

匿名类的方法必须覆盖/实现其超类的方法才能从外部访问。不幸的是,没有办法编写更多样板来实现您的目标。

【讨论】:

  • +1 唯一的选择是使用反射,如果你不能修复代码,我只会建议。
猜你喜欢
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2013-10-19
  • 1970-01-01
相关资源
最近更新 更多