0

基本的に私はこの Java プログラムを BlueJ で作成しています。プレイヤーはロード オブ ザ リングの世界にいます。武器、アイテムなどの個別のパッケージを作成しました。すべてのパッケージの外側 (プロジェクト画面の本体) にクラス Main があります。そこで、あることを試みました。

public static void test()throws Exception{
        System.out.println("There is a brass sword and an iron sword. Which do you want?");
        Scanner in = new Scanner(System.in);
        String s = in.next();
        HashMap options = new HashMap();
        options.put("brass", new Sword());
        options.put("iron", new Sword());
        Sword k = options.get(s);
}

上記のメソッドでSwordオブジェクトを返してもらいたいです。残念ながら、これは機能しません。助けて……?

4

4 に答える 4

2

パラメータ化された型を使用して、 asHashMapを宣言するだけですHashMap

HashMap<String, Sword> options = new HashMap<String, Sword>();

上記のメソッドでSwordオブジェクトを返してもらいたいです。

次に、メソッドの戻り値の型を変更し、それに戻り値を追加します。

public static Sword test()throws Exception{
        System.out.println("There is a brass sword and an iron sword. Which do you want?");
        Scanner in = new Scanner(System.in);
        String s = in.next();
        HashMap<String, Sword> options = new HashMap<String, Sword>();
        options.put("brass", new Sword());
        options.put("iron", new Sword());
        Sword k = options.get(s);
        return k;
}
于 2013-10-31T10:27:55.647 に答える
0

デフォルトの hashMap は、キャストする必要があるコードを表す 2 つのジェネリック型を受け入れますが、ジェネリックの力を使用しないため、キャストがHashMap<Object,Object>必要ないため、@BackSlash の回答をお勧めします。HashMap<Key,Value>options.get(s)Sword

ジェネリックの詳細: http://www.tutorialspoint.com/java/java_generics.htm

于 2013-10-31T10:35:08.410 に答える