【问题标题】:How can you instantiate an inner class AND implement an additional interface你如何实例化一个内部类并实现一个额外的接口
【发布时间】:2017-05-12 08:26:02
【问题描述】:

我需要在 Java 中创建一个内部类,并让该内部类也实现一个“可选”标记接口。

例如我想做的就是写

final Object obj1 = new Adapter() implements MarkerInterface {
    @Override
    public void adapterMethod() {

    }
};

final Object obj2 = new Adapter() {
    @Override
    public void adapterMethod() {

    }
};

我意识到上面不会编译。

我可以采取什么方法来获得预期的结果?

【问题讨论】:

  • 你考虑过用注解代替标记界面吗?
  • @khelwood:针对这种特定场景的出色左场思维......
  • nested classes tutorial 可能有助于解决您的问题。
  • 您要求提供内部类,但您的代码显示匿名类,您需要哪些?
  • 我在考虑内部类并写了匿名示例。说了这么多,我确实喜欢使用注释来实现这一点的想法,尽管我需要在我的 android 应用程序中使用该解决方案,因此为此配置注释处理器似乎需要付出很多努力。

标签: java interface inner-classes


【解决方案1】:

匿名:

private [static] class MyAdapter extends Adapter implements MarkerInterface {
    ...
}

...

MyAdapter a = new MyAdapter();

如果你真的想的话,你甚至可以在你的方法中嵌套这个类声明。

【讨论】:

  • “如果你真的想的话,你甚至可以在你的方法中嵌套这个类声明。” 我倾向于忘记这一点,这可能(总的来说)是一个好东西。 :-) 但是有时实际上可能需要这样做......
  • 是的,我不记得有一次我认为这是个好主意。
  • 我会考虑Adapter a = new MyAdapter();
  • 我经常发现非匿名内部类比匿名类更清晰
猜你喜欢
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多