我们将 private inner class 设为 final 有什么好处?
What merits do we have making a private inner class final?
我今天检查了一些代码。我发现了这样的东西:
public class SomeClass
{
...
final private class SomeHandler implements Blahblah
{
...
}
}
既然没有人能够从外部访问 SomeHandler
,我不明白我们为什么要访问 final
。有人有不同的见解吗?
将 class 声明为 final
有两个相关但不同的目的。
它告诉编译器"do not allow this class to be extended"。这样做主要是为了防止出错。
它告诉reader"do not worry that this class might be extended"。这是为了帮助理解。
在 private final
内部 class 的情况下,我们可以假设一个人编写或修改 class 并且他们在了解设计后进行。因此,有人错误地扩展了不应扩展(按设计)的 class 的可能性很小。
然而,阅读代码的人需要知道 private
内部 class 可能已经扩展需要扫描整个 Java 源文件...除非 class 已声明 final
.
因此 final
可能会起到一个有用的作用...使设计清单提高可读性。
另一方面,您发现可能示例中的final
是在没有任何特定意图的情况下添加的;即它可能只是 "redundant".
我今天检查了一些代码。我发现了这样的东西:
public class SomeClass
{
...
final private class SomeHandler implements Blahblah
{
...
}
}
既然没有人能够从外部访问 SomeHandler
,我不明白我们为什么要访问 final
。有人有不同的见解吗?
将 class 声明为 final
有两个相关但不同的目的。
它告诉编译器"do not allow this class to be extended"。这样做主要是为了防止出错。
它告诉reader"do not worry that this class might be extended"。这是为了帮助理解。
在 private final
内部 class 的情况下,我们可以假设一个人编写或修改 class 并且他们在了解设计后进行。因此,有人错误地扩展了不应扩展(按设计)的 class 的可能性很小。
然而,阅读代码的人需要知道 private
内部 class 可能已经扩展需要扫描整个 Java 源文件...除非 class 已声明 final
.
因此 final
可能会起到一个有用的作用...使设计清单提高可读性。
另一方面,您发现可能示例中的final
是在没有任何特定意图的情况下添加的;即它可能只是 "redundant".