最终字符串类与非最终字符串类的最终方法

2022-09-03 00:45:59

我知道出于安全和性能相关原因,该类被声明为最终类。java.lang.String

我不明白的是,使用所有最终变量和最终方法而不是声明最终类是否可以实现相同目的的部分?

简而言之,下面两个代码片段有什么区别..例如

public class final String { .. } 

电压/秒

// non final class
public class String {

// all final variables
private final char[] value;

// all final methods
public final String subString() { .. }
public final int length() { return value.length;}

// etc
}

编辑

简而言之,我可以通过采用任何一种方法来实现相同级别的不变性吗?它们都有利于使对象不可变吗?


答案 1

不能扩展最终类。

具有最终方法的非最终类可以扩展(可以在子类中添加新方法),但不能覆盖现有的最终方法。


答案 2

类上的 final-修饰符并不意味着属性也是 final 的和不可变的。这只是意味着该类不能再是父类。无法扩展最终类。

请参阅在 Java 中使用最终类