Java 最后的吸气剂
Java Final Getters
给出以下 class:
public class SomeClass {
private final int a;
public SomeClass(int a) {
this.a = a;
}
}
就完整性而言,哪个更合适?
public final int getA() {
return a;
}
或
public int getA() {
return a;
}
在我看来,两者是等价的,所以我什至懒得把 final
.
但是为了完整起见,第一种方法似乎比第二种方法 "correct" 多。
关键字 final
应用于方法与应用于变量的含义完全不同。
在一个方法上,表示no subclass can override the method。它与不更改值无关。所以,你的两个选择是不等价的,因为子类是否可以覆盖 getA()
.
根据Oracle
You can declare some or all of a class's methods final. You use the
final keyword in a method declaration to indicate that the method
cannot be overridden by subclasses.
所以这取决于你所说的完整性是什么意思。 实际上 但是,这实际上取决于您是否希望 getters
被覆盖。
当你将 final
应用于 Java 中的不同事物时,它给你的意义几乎完全不同。
final on variables
: Values cannot be assigned to it.
final on methods
: Methods cannot be overridden by sub-classes
final on classes
: That class cannot be extended by another class.
希望能给你一些清晰的东西。
给出以下 class:
public class SomeClass {
private final int a;
public SomeClass(int a) {
this.a = a;
}
}
就完整性而言,哪个更合适?
public final int getA() {
return a;
}
或
public int getA() {
return a;
}
在我看来,两者是等价的,所以我什至懒得把 final
.
但是为了完整起见,第一种方法似乎比第二种方法 "correct" 多。
关键字 final
应用于方法与应用于变量的含义完全不同。
在一个方法上,表示no subclass can override the method。它与不更改值无关。所以,你的两个选择是不等价的,因为子类是否可以覆盖 getA()
.
根据Oracle
You can declare some or all of a class's methods final. You use the final keyword in a method declaration to indicate that the method cannot be overridden by subclasses.
所以这取决于你所说的完整性是什么意思。 实际上 但是,这实际上取决于您是否希望 getters
被覆盖。
当你将 final
应用于 Java 中的不同事物时,它给你的意义几乎完全不同。
final on variables
: Values cannot be assigned to it.
final on methods
: Methods cannot be overridden by sub-classes
final on classes
: That class cannot be extended by another class.
希望能给你一些清晰的东西。