Я знаю, что класс java.lang.String
объявляется окончательным по соображениям безопасности и производительности.
То, что я не понимаю, является частью того, можно ли достичь одной цели с использованием всех конечных переменных и конечных методов вместо объявления конечного класса?
Короче говоря, в чем разница между двумя фрагментами кода.. например,
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
}
редактирует
Простыми словами, могу ли я достичь такого же уровня неизменности, перейдя к любому подходу? Они оба хороши, чтобы объекты были неизменными?