【发布时间】:2014-08-26 10:45:49
【问题描述】:
我知道出于安全和性能相关的原因,java.lang.String 类被声明为 final。
我不明白的是,是否可以使用所有最终变量和最终方法而不是声明最终类来实现相同的目的?
简而言之,下面两个代码 sn-ps 有什么区别.. 例如
public class final String { .. }
v/s
// 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
}
编辑
简单来说,我可以通过使用任何一种方法来实现相同级别的不变性吗?它们都可以使对象不可变吗?
【问题讨论】:
-
好吧,你不希望变量
final从那时起它们只能有一个不可变的值。但问题仍然存在于方法上。 -
是的,完全正确。我在 Google 搜索中找不到此问题的有效答案。
-
@All Check 已编辑问题部分。
-
阅读@shay 对this answer的第一条评论...
-
这与询问静态类是否可以实现与静态变量相同的效果相同-它们完全不同!
标签: java string immutability final