Я думаю, вы думаете о простом случае, таком как:
private final int num = 3;
Это может быть лучше написано как:
private static final int NUM = 3;
Однако часто вы будете иметь ссылки на объекты, которые являются изменяемыми и поэтому не могут быть разделены между классами:
private final List<Node> children = new ArrayList<Children>();
Или, возможно, значение, переданное или полученное в конструкторах:
public final class MyThing {
private final String name;
public MyThing(String name) {
this.name = name;
}
[...]
}
Примечание: final
поля могут быть назначены в конструкторах (или инициализаторе экземпляра), а не только как часть объявления.