'final' 字段修饰符在不可变的 class 中是否多余?
Are 'final' field modifiers superflous in an immutable class?
我通常有这么小的 class 定义,如下所示:
public static class Annotation {
private final String brand;
private final Sentiment sentiment;
public Annotation(String brand, Sentiment sentiment) {
this.brand = brand;
this.sentiment = sentiment;
}
public String brand() {
return this.brand;
}
public Sentiment sentiment() {
return this.sentiment;
}
}
没有任何方法可以由客户端修改'brand'和'sentiment'。如果我删除 'final' 修饰符,我的 IntelliJ 会给我一个警告,说我应该添加 'final' 方法。
在这种情况下总是添加 'final' 是好习惯吗?
IntelliJ建议变量尽量final
,这样可以防止你意外修改变量。
如果使用 static final
修饰符,有时 Java 编译器也会优化代码。
我通常有这么小的 class 定义,如下所示:
public static class Annotation {
private final String brand;
private final Sentiment sentiment;
public Annotation(String brand, Sentiment sentiment) {
this.brand = brand;
this.sentiment = sentiment;
}
public String brand() {
return this.brand;
}
public Sentiment sentiment() {
return this.sentiment;
}
}
没有任何方法可以由客户端修改'brand'和'sentiment'。如果我删除 'final' 修饰符,我的 IntelliJ 会给我一个警告,说我应该添加 'final' 方法。
在这种情况下总是添加 'final' 是好习惯吗?
IntelliJ建议变量尽量final
,这样可以防止你意外修改变量。
如果使用 static final
修饰符,有时 Java 编译器也会优化代码。