基本上我在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对象返回给我。不幸的是,这不起作用。任何帮助....?
答案 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