クラスのtoString()メソッドがオーバーライドされていない(またはオーバーロードされていない)場合、クラス内に文字列を返す別のメソッドが定義されている場合、文字列が期待されるクラスの?オーバーライドされていない場合のオブジェクトのtoString()動作
答えて
クラスがObject
の場合は、結果はObject#toString()
となり、これが呼び出されます。あなたのクラスが他のものを拡張している場合は、継承パスに最初に#toString
が追加されます。
Better .... toString()を定義する最初の親クラス –
文字列を返すメソッドが返した文字列ではありません – karthikeyan
正しい答えをダウンボールドしないでください。答えは更新され、正式に正しかった。 –
Stringが必要なクラスの名前を使用することはできません。 )(デフォルト.toStringを継承しますFooクラスの.toString()メソッドがオーバーライドされていないので、
class Foo {}
class Bar {
public void baz(String a) {
}
public void binky() {
Foo b = new Foo();
baz(b.toString());
}
}
を:あなたは次の操作を行うことができ、しかし
class Foo {}
class Bar {
public void baz(String a) {
// Do something
}
public void binky() {
baz(Foo); // Compiler error
}
}
:次のことを考えてみましょうObjectクラスから取得します。このデフォルトの動作では、オブジェクトがインスタンスであるクラスの名前、アットマーク文字@ '、およびオブジェクトのハッシュコードの符号なし16進表現からなる文字列が出力されます。 (Thanks Kevin!)
'ObjectクラスのtoStringメソッドは、オブジェクトがインスタンスであるクラスの名前、アットマーク文字@、およびオブジェクトのハッシュコードの符号なし16進表現からなる文字列を返します。メモリアドレスではありません。 'toString'のドキュメントを参照してください。 – SomeJavaGuy
面白い事実:これは、スタックオーバーフローに関する質問をして回答を得るよりも時間がかかりません。
あなたが知っているとおり、直接または間接的に作成するすべてのクラスは、全能のObject
クラスから継承します。 toString
を上書きしない場合は、toString
を呼び出すと、最も近い祖先のtoString
メソッドが呼び出されます。 D
から継承C
から継承B
から
と仮定A
継承。 C
のみがtoString
に上書きされました。
Calling toString on an object of... will result in calling the toString of...
A C
B C
C C
D Object
ご理解いただければ幸いです。
実際には、toString
はこのように動作するだけでなく、 すべてのメソッドで同様に実行されます。
Object.toString
が呼び出されるようになりました。それは実際に何をしていますか?
[email protected]
FullyQualifiedNameOfYourClass
基本的には、例えばであるパッケージに続いて、あなたのクラス名を、意味:this answerから
、我々はこのようなObject.toString
出力の何かがあることを知っていますcom.example.MyClass
。
12345
は、オブジェクトのハッシュコードであり、オブジェクトのhashCode()
によって戻されます。
だから、Object.toString
は、文字列を返すクラスのメソッドの1つを呼び出します(宣言した場合)?
いいえ。それはちょうどしないので。 toString
のドキュメントには、[email protected]
のようなものだけが返され、それ以外は何も返されないことが明らかです。
たとえしても意味がありません。文字列を返す2つのメソッドを宣言した場合はどうなりますか?どちらを選ぶべきですか?また、リフレクションには時間がかかり、全体を遅くします。
- 1. Java8:ハッシュマップがtostringの動作をオーバーライド
- 2. オブジェクトがファイナライズされてもガベージコレクションされていない場合の弱参照動作
- 3. C#オーバーライドのToString()TextBoxなど
- 4. リスナー '$ cordovaLocalNotification:trigger'がトリガーされていない '$ cordovaLocalNotification:scheduled'が動作している場合
- 5. プログレッシブエンハンス、ページがまだ完全にロードされていない場合の動作
- 6. オブジェクトのtuple()動作のオーバーライド
- 7. Android ORMLiteと作成されていない場合は作成
- 8. equalsをオーバーライドする必要がない場合のHashCodeのオーバーライド
- 9. オーバーライドされたメソッドが型パラメータを指定しない場合、オーバーライドできないのはなぜですか?
- 10. 条件が満たされていてもコードが動作しない場合
- 11. Silverlightの動作onDetachingのオーバーライドが呼び出されない
- 12. オーバーライドのない場合のスーパーvs.これの使用
- 13. ファイルに何もエクスポートされていないモジュールが必要な場合のNode.jsの動作について
- 14. "strict"ディレクティブが使用されている場合、IE11で動作しないテンプレートリテラル
- 15. oracleデータベースにテーブルが自動的に作成されていない場合は、
- 16. 私のtoString()メソッドがCalendarのtoString()メソッドをオーバーライドしていません
- 17. 静的ライブラリの場合は、参照されていない静的オブジェクトは作成されませんか?
- 18. 文がダウンロードされたデータで動作しない場合
- 19. タイマが動作していない文が動作しない場合
- 20. オーバーライドToStringメソッド
- 21. パラメータがレール上で動作していない場合のルーティング
- 22. pythonの文が動作していない場合
- 23. Javascript appendChildとreplaceChildの間に動作していない場合
- 24. nested_form_fields gem、jQueryチェーンが動作していない場合のoptions_for_select
- 25. xsltディープxmlが作成されていない場合はコピー
- 26. 選択されていない場合、動的に作成された複数のドロップダウンからのチェック
- 27. 2つのMySQL関数が独立して動作しますが、結合されていない場合(RAND()?)
- 28. オブジェクトに定義されている場合のオーバーライド機能その他のデフォルト機能
- 29. リンクされたリスト実装のtoStringメソッドがjsで動作しない
- 30. Spring JPA/Hibernate - オブジェクトが変更されていない場合の更新方法
お試しください。シンプルで簡単なテストです。それ以外の場合は、ドキュメントをお読みください。 –
真剣に:簡単にテストできるものについては質問を書いてはいけません。良いプログラマの中核的な特質の1つは好奇心です。これは好奇心のようなものです。他の人にそのような基本的なことを尋ねるのではなく、それを**行うことでプログラミングを学びます。 – GhostCat
私はラップトップとJavaコンパイラを搭載したコンピュータなしでホステルにいます。本から孤立してJavaを学んでいます – karthikeyan