私は Java にかなり慣れていないので、用語を正しく使用していない場合は教えてください。という名前のオブジェクトを返すPlayer
という名前のメソッドを持つという名前のオブジェクトクラスがあります。 getInventory()
ArrayList<Item>
inventory
私はそのメソッドArrayList
がアイテムを保持する の形でプレーヤーのインベントリを返すようにしたかったのですが、これまでのところ問題なく動作しています。
Item
クラスは、クラスが継承する抽象基本/親クラスArmor
ですSword
。だから、私はフォーマットを次のようにしたかった(私は「GUI」に純粋にテキストベースのアプローチを使用している.
- バンド付きメイル - アーマー
- 鎖帷子 - 防具
- ロングソード - ソード
次のコードを使用して、"Banded Mail" 部分を表示します (count は通常どおり、ループで使用されます)。
System.out.print(player.getInventory().get(count).getName());
そして、次のコードを使用して、オブジェクトが作成されたクラスのタイプ (つまり、そのクラスの名前) を解読しようとしました。
System.out.println(player.getInventory().get(count).getClass().toString());
オブジェクトが作成されたクラスに基づいて、「鎧」または「剣」または「盾」を印刷したかっただけです。toString()を追加するとうまくいくと思いましたが、代わりに次の出力が得られます。
クラス Weaponequipdemo.Armor
だから私は2つのことを知りたいです:
toString()
クラスの名前だけを表示するようにオーバーライドするにはどうすればよいですか?toString()
のインスタンスの 正確な場所はどこplayer.getInventory().get(count).getClass().toString()
ですか? と最も重要なことは、ドット演算子を使用してオブジェクトに追加できる他の多くのメソッドをオブジェクトが持つことができるのはなぜでしょうか?
Player
クラスが という名前のメソッドを持ちたいのは理解できますgetName()
が、 はどうplayer.getInventory().get(count)
ですか?メソッドの中にメソッドを入れますか?それは可能ですか?私が物事を見てきた方法から、ドット演算子はオブジェクトのシェルの内側にさらに進むことを表す方法です(メソッドはクラスの内側にあります)が、それが本当なら、それはあなたが中にメソッドを持つことができることを意味しますメソッドの。よくわかりません。
ご協力をお願いいたします。