在Java中使用HashMaps

时间:2013-10-31 10:26:40

标签: java

基本上我在BlueJ制作这个Java程序,其中玩家处于指环王的世界里。我为武器,物品等创建了单独的包。我在所有包之外有一个类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 个答案:

答案 0 :(得分:2)

只需使用参数化类型HashMap,将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;
}

答案 1 :(得分:1)

使用以下代码:

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());
    return options.get(s);
}

答案 2 :(得分:0)

如果您希望自己的方法返回Sword对象,则应将public static void test()更改为public static Sword test(),并在方法调用结束时return sword

答案 3 :(得分:0)

默认的hashMap接受两个通用类型HashMap<Object,Object>,代表HashMap<Key,Value>代码,您必须将options.get(s)强制转换为Sword,但不要使用Generics的力量因此推荐@ BackSlash的答案,因为你不需要施法。

有关泛型的更多信息:http://www.tutorialspoint.com/java/java_generics.htm