gpt4 book ai didi

java - 为什么包装类、字符串...是final的?

转载 作者:行者123 更新时间:2023-12-02 07:45:22 26 4
gpt4 key购买 nike

核心 Java API 中的许多类都是最终类(包装类、字符串、数学)。为什么会这样?

最佳答案

出于安全原因,它们是最终的。可能还有其他原因,但安全是最重要的。

想象一下继承java.lang.String的能力,并向安全敏感的API提供您自己的可变实现。 API 别无选择,只能获取您的字符串(记住替换原则),但您可以从它们下面更改字符串(在并发线程上或 API 返回后),即使在他们检查它是有效。

原语的包装器也是如此:您不希望看到它们在任何情况下都是可变的,因为这会违反使用这些类在 API 中编码的行为的重要假设。

String设为final可以解决这个问题,方法是不让其他人提供他们自己的、可能具有敌意的、像String一样基本的类的实现。

关于java - 为什么包装类、字符串...是final的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com