Item 40@Overrideを使用した一貫したプレゼンテーション
8279 ワード
通常のプログラマーにとってjava内蔵のプレゼンテーションで最も重要なのは@Overrideです
@Overrideプロパティ
1.メソッド宣言のみ
2.このプレゼンテーションに依存する場合は、親タイプを再定義したメソッドを示します.
3.一貫して使用することで、様々な悪名高い誤りを予防することができます.
2つの40-1英字からなる文字列を表す「遅いエラー」を検索します.
equalsは「再定義」ではなく「多重定義」です.
このエラーはコンパイラで検索できますが、オブジェクトです.equalsの意図を明確に再定義しなければならない.
間違ったところは明確に教えてくれるので、すぐに正しく直すことができます.
すべての再定義されたメソッドに@Overrideコメントが意図的に追加された場合、コンパイラはエラーが発生したときにに通知します.例外は、特定のクラスで親の抽象メソッドが再定義されている場合、この説明は必要ありません.
@Overrideプロパティ
1.メソッド宣言のみ
2.このプレゼンテーションに依存する場合は、親タイプを再定義したメソッドを示します.
3.一貫して使用することで、様々な悪名高い誤りを予防することができます.
2つの40-1英字からなる文字列を表す「遅いエラー」を検索します.
public clas Bigram {
private final char first;
private final char second;
public Bigram(char first, char second) {
this.first = first;
this.second = second;
}
public boolean equals(Bigram b) {
return b.first == first && b.second == second;
}
public int hashCode() {
return 31 * first + second;
}
public static void main(String[] args) {
Set<Bigram> s = new HashSet<>();
for (int i = 0; i < 10; i++) {
for(char ch = 'a'; ch <= 'z'; ch++)
s.add(new Bigram(ch, ch));
System.out.println(s.size());
}
}
Setは反復を許さないので、26を出力することができるが、260を出力する.equalsは「再定義」ではなく「多重定義」です.
このエラーはコンパイラで検索できますが、オブジェクトです.equalsの意図を明確に再定義しなければならない.
@Override public boolean equals(Bigram b) {
return b.first == first && b.second == second;
}
@Overrideプレゼンテーションを使用して再コンパイルすると、コンパイルエラーが発生します.間違ったところは明確に教えてくれるので、すぐに正しく直すことができます.
@Override public boolean equals(Object o) {
if(!(o instanceOf Bigram))
return false;
Bigram b = (Bigram) o;
return b.first == first && b.second == second;
}
親メソッドを再定義するすべてのメソッドに@Overrideコメントを追加します.例外があります。特定のクラスで親の抽象メソッドを再定義する場合は、保留する必要はありません。
コアの整理
すべての再定義されたメソッドに@Overrideコメントが意図的に追加された場合、コンパイラはエラーが発生したときにに通知します.
Reference
この問題について(Item 40@Overrideを使用した一貫したプレゼンテーション), 我々は、より多くの情報をここで見つけました https://velog.io/@wlghsp/Item-40-Override-애너테이션을-일관되게-사용하라テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol