hashCode
メソッドをオーバーライドしない場合、デフォルトの実装はhashCode
ですか?`hashCode`のデフォルトの実装は何ですか?
答えて
このクラスは、その祖先の1人からhashCode
を継承します。それらのうちのどれかを上書きしないと、Object.hashCodeが使用されます。 docsから
:
合理的に実用的である限り、クラスオブジェクトによって定義されたhashCodeメソッドは、異なるオブジェクトの異なる整数値を返しません。 (これは、典型的には、整数にオブジェクトの内部アドレスを変換することによって実現されるが、この実装技術はのJavaTMプログラミング言語で必要とされない。)
ので、デフォルト実装では、JVM固有
ありがとう、はい。 'Object.hashCode()look 'の実装はどんなものですか? –
@JohnThreepwood実装の詳細ですから、そのためにJVMドキュメントを扱う必要があります。 –
http://stackoverflow.com/a/32454673/6785908 –
オブジェクトです。 hashcode()はネイティブメソッドです。それは、プラットフォーム固有のコードで実装だとネイティブメソッドとして公開されることを意味
public native int hashCode();
。同じのため
コードがコンパイルされたコードと使用できませんwithing JDK
このexisting questionは、より多くの情報を提供するかもしれないだろう。
デフォルトでは、オーバーライドされないメソッドはObject
から継承されます。
このメソッドのドキュメントを見ると、戻り値は "[...] distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer [...])
"です。 java.lang.Object
のメソッドはネイティブとして宣言されています。つまり、実装はJVMによって提供され、実行時環境によって異なる場合があります。
小さな例:
Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.hashCode());
System.out.println(o2.hashCode());
プリント(私のJDK6を使用):
1660187542
516992923
hashCode()
値の
A進表現を介してtoString()
のデフォルトの実装で使用されます。実行System.out.println(o1)
[email protected]
良い説明。 – chipmunk
- 1. HashMap実装:--- hashcode
- 2. Any型のオブジェクトに対するHashcodeのScala実装とは何ですか?
- 3. 良いhashCode()実装
- 4. Java ArrayのHashCode実装
- 5. JavaでhashCode()を実装する方法
- 6. `##`と `hashCode`の違いは何ですか?
- 7. AtomicBooleanのhashCodeとは何ですか?
- 8. Javaソケットがデフォルトで実装するARQプロトコルは何ですか?
- 9. コレクションを含むJavaクラスのhashcode実装
- 10. デフォルトの実装は
- 11. ScalaでequalsとhashCodeを実装するための標準的なイディオムは何ですか?
- 12. Javaハッシュテーブル#hashCode()の実装が壊れていますか?
- 13. Swift 3でJava StringのhashCode()メソッドを実装する
- 14. hashCodeメソッドの実装でオーバーフローを処理する方法
- 15. Javaで配列hashcode()がどのように計算されるか。配列の場合のhashcode()の実装
- 16. Scrapy:項目と項目のデフォルト値。最良の実装は何ですか?
- 17. インターフェイスで定義されたメソッドの「デフォルト」実装とは何ですか?
- 18. 優先度キューを実装するプログラマのデフォルト選択は何ですか?
- 19. ギャラリーのJavaScript実装は何ですか?
- 20. メソッドの+実装とは何ですか?
- 21. IGroupingの実装クラスは何ですか?
- 22. std :: is_nothrow_copy_constructibleの実装は何ですか?
- 23. スカラーでequalsとhashCodeを実装する方法
- 24. デフォルト実装
- 25. バイナリデータ用の移植可能なhashCodeの実装
- 26. Springのコマンドデザインパターンのデフォルト実装
- 27. AppDelegate実装とは何ですか? PushNotificationIOS
- 28. Javaマップの実装がHashCodeに基づいていない
- 29. embeddable jpaクラスはequalsとhashCodeを実装する必要がありますか?
- 30. splitViewControllerのデフォルト実装:shouldHideViewController:inOrientation:
デフォルトのimplについてあなたは[this](http://blogs.tedneward.com/CommentView,guid,eca26c5e-307c-4b7c-931b-2eaf5b176e98.aspx)を読むことができます。 – CAMOBAP
デフォルトの実装はJVM固有ですが、一般的に 'return Objects。ハッシュ(this.field1、this.field2、this.field3など); ' – NoName