【问题标题】:Why is String final? [duplicate]为什么字符串是最终的? [复制]
【发布时间】:2011-01-04 03:46:24
【问题描述】:

可能重复:
Why is String final in Java?

我只是想知道为什么java.lang.Stringfinal?是为了防止被继承吗?为什么?

【问题讨论】:

标签: java string


【解决方案1】:

确实如此。这允许安全管理器和类加载器中的代码使用 String 类型,而不必担心它实际上是在处理一个恶意子类,该子类专门设计用于诱使恶意代码通过。

【讨论】:

    【解决方案2】:

    您不应该扩展字符串类。只需在其他处理字符串的类中编写自己的方法即可。

    原因是字符串类是一个稳定的类,不应该被篡改,因为你可能会重新定义一些方法,这些方法会对其他一些事务产生未知的副作用。

    【讨论】:

    • 我认为问题是关于“为什么”,而不是什么......
    • @StaxMan 你的权利......我添加的不仅仅是一个没有。
    • 但如果是这个原因,他们可以只声明方法final 以防止被覆盖,而不是整个类。你怎么看?
    【解决方案3】:

    除了已经提到的安全方面,我怀疑性能是另一个重要原因。对于较旧的 JVM,尤其是最终类(根据定义,所有方法都是最终的)使得动态内联代码变得更加容易。而且由于 String 是使用最频繁的对象之一,它会影响许多应用程序的整体性能,因此这被视为一个可以产生巨大整体影响的领域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      相关资源
      最近更新 更多