在所有Java源代码示例中,我查看的监听器始终在内部类中声明。

为什么-对这样的类进行编码而不是在单独的* .java文件\类中包含监听器的原因是什么?

为听众设置单独的类会被认为是不好的设计吗?

如果这不是一个糟糕的设计\违法的行为,请有人举一个简短的示例演示如何实现此目标?

感谢您的阅读。

编辑\更新-2010年8月10日:
感谢所有花时间回复的人。有很多有见地的要考虑的方面。
阅读完所有答案后,我认为除非有充分的理由这样做,否则将监听器声明为内部类会更好,更容易。

抱歉不能尽快回到这个问题,但是我并不总是有那么多的时间来编码:-(

快乐的编码。

最佳答案

使用内部类的充分理由:

  • 避免在包 namespace
  • 中添加额外的顶级类
  • 将代码保持本地封装(例如,在需要事件处理行为的组件中)
  • 静态内部类不需要访问封闭类
  • 的字段时,它们可以很好地工作

    使用顶级类的可能原因:
  • 您有一种特殊的监听器,您希望它被外部包使用或作为API的一部分(例如,在Java类库本身中)使用
  • 监听器在很多地方使用,并且在逻辑上并不是特定于许多可能的封闭类
  • 中的任何一个

    简而言之:内部类通常是首选,但是如果您有充分的理由,那么创建顶级类可能是完全明智的选择。

    关于Java-是否应始终在内部类中声明ActionListener,KeyListener和Etc?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3436329/

    10-12 14:59