【发布时间】:2016-11-13 16:29:14
【问题描述】:
我正在开发一个基于文本的 RPG。在其中一个类中有一个处理保存和加载游戏的 ArrayList。 ArrayList 中既有整数又有字符串。
这是一个字符串:saveGame.add(p.getName());
这是一个整数:saveGame.add(p.getCurrLoc());
向列表中添加元素的每个变量都会收到如下警告:
D:\Backup\RPG\src\rpg\Player.java:86: 警告:[未选中] 未选中 调用 add(E) 作为原始类型 ArrayList 的成员 getInventory().add(item);其中 E 是一个类型变量: E 扩展类 ArrayList 中声明的 Object
代码:
public class Data {
private ArrayList saveGame;
//Sparar en ny rad i sparfilen
public void writeData(String in) {
try {
FileWriter out = new FileWriter("Savegame.txt", true);
out.write(in + "\n");
out.close();
} catch (IOException ex) {
Logger.getLogger(Data.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void save(Player p) {
clearData();
saveGame = new ArrayList();
saveGame.add(p.getName());
saveGame.add(p.getCurrLoc());
saveGame.add(p.getStrength());
saveGame.add(p.getConstitution());
saveGame.add(p.getDexterity());
saveGame.add(p.getHitpoints());
saveGame.add(p.getLevel());
saveGame.add(p.getxP());
saveGame.add(p.getxPToLvlUp());
saveGame.add(p.getArmorClass());
saveGame.add(p.getNrOfPotions());
saveGame.add(p.getEqWeapon().getName());
for(Object element : p.getInventory()) {
if(element instanceof Weapon) {
saveGame.add(((Weapon) element).getName());
} else if(element instanceof Item) {
saveGame.add(((Item) element).getName());
} else if(element instanceof Armor) {
saveGame.add(((Armor) element).getName());
}
}
for(Object element : saveGame) {
writeData(element.toString());
}
}
【问题讨论】:
-
你需要使用泛型。
-
警告不是错误。
标签: java arraylist compilation