当前位置: 首页 > 面试题库 >

Java(匿名或非匿名)内部类:使用它们很好吗?

许俊风
2023-03-14
问题内容

在我的某些项目和某些书中,据说最好 不要
使用内部类(不管是匿名与否,静态还是非静态),除非在某些受限制的条件下(例如EventListeners或Runnables)。在我的第一个行业项目中,他们甚至被“禁止”。

这真的是最佳做法吗?为什么?

(我不得不说我经常使用它们…)

-编辑—
在所有这些答复中我都找不到一个正确的答案:大多数答复中都包含正确的部分:我仍将使用内部类,但我将尽量少使用它们!


问题答案:

在我看来,Java代码中90%的内部类是与单个类关联的实体,因此被“推入”为内部类,或者是因为Java不支持Lambda而存在的匿名内部类。

我个人不喜欢看到复杂的内部类。它们增加了源文件的复杂性,使其变大,在html" target="_blank">调试和分析等方面很难处理。我喜欢将项目分成许多包,在这种情况下,我可以使大多数实体成为顶级类仅限包装。

这给了我必要的内部类-
例如动作侦听器,伪造的“函数式”程序等。这些通常是匿名的,虽然我不是粉丝(在很多情况下会首选Lambda),但我却与他们同住,但不不喜欢他们。

我多年来没有做过任何C#,但我想知道当他们引入Lambdas时,内部类的盛行或其他等效的C#是否被丢弃。



 类似资料:
  • 本文向大家介绍Java匿名类,匿名内部类实例分析,包括了Java匿名类,匿名内部类实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java匿名类,匿名内部类。分享给大家供大家参考,具体如下: 内部类 匿名类  首发日期 :2018-03-25 内部类: 在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外部类】 如果想要通过一个类来使用另一个类,可以定

  • 问题内容: 我已经看到了几个与Java中类似的示例,希望有人可以解释发生了什么。似乎可以内联定义一个新类,这对我来说真的很奇怪。 第一行是预期的输出行,因为它只是toString。但是第二似乎函数可以内联重写。 为此有技术术语吗? 还是任何更深入的文档? 如果我有以下代码: 代码输出: 问题答案: 它是一个匿名内部类。您可以在Java文档内部类链接中找到有关它的更多信息。 编辑 我正在添加一个更好

  • 在以下片段中: 有没有办法从内部匿名类引用匿名类的外部实例? 第二个错误是在解决方案上,我在这里找到了一个匿名内部类的外部类的关键字。这些问题似乎共享一些概念和问题空间,但性质不同。

  • 问题内容: Java中匿名类的用途是什么?我们可以说使用匿名类是Java的优势之一吗? 问题答案: 使用某些“额外”(例如覆盖方法)创建对象的实例时,匿名内部类会变得很有用,而不必实际继承一个类。 我倾向于将它用作附加事件侦听器的快捷方式: 使用此方法可以使编码更快一些,因为我不需要创建额外的类来实现我可以实例化一个匿名内部类而无需实际创建单独的类。 我仅将这种技术用于“快速而肮脏的”任务,在这些

  • 在此代码示例中,ActionListener的actionPerformed函数中没有使用最终对象jLabel:

  • 问题内容: 如何在我的匿名内部子类中获取传递给此方法的值? 我收到此错误: 无法在以其他方法定义的内部类中引用非最终变量userID 我很确定我不能将其赋值为final,因为它是一个未知值的变量。我听说这种语法确实以某种方式保留了作用域,所以我认为必须有一个我不太了解的语法技巧。 问题答案: 当然,您可以将其分配为final-只需将该关键字放入参数的声明中即可: 我不确定这是一个未知值的变量是什么