首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么包装器类,字符串,...期末考试?

为什么包装器类,字符串,...期末考试?
EN

Stack Overflow用户
提问于 2012-05-02 02:28:23
回答 2查看 1.5K关注 0票数 3

核心Java API中的许多类都是最终类(包装类、字符串、数学)。为甚麽呢?

EN

回答 2

Stack Overflow用户

发布于 2012-05-02 02:34:18

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

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

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

通过不让其他人提供他们自己的、可能有敌意的、像String一样基础的类的实现,使String final解决了这个问题。

票数 6
EN

Stack Overflow用户

发布于 2012-05-02 02:33:48

您可能希望阻止其他程序员创建子类或重写某些方法。对于这些情况,您可以使用final关键字。

String类应该是不可变的-- string对象不能被它们的任何方法修改。因为java不强制这样做,所以类设计者这样做了。没有人可以创建String的子类。

希望这能回答你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10402315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档