2013-03-21 41 views
3

我目前編程bukkit插件(bukkit是的Minecraft服務器類型;)),而且,你已經有了一個名爲YamlConfiguration類中的方法已下面的方法:列表<?>添加和刪除元素

public List<?> getList(String path) 

我的問題是:我想添加和/或刪除列表中的元素返回。但是,當我嘗試通過

YamlConfiguration config = YamlConfiguration.load("path/to/config.yml"); 
config.getList("a.path").add(new String("foo")); 

日食做,這是在類型列表<捕捉#2的拋出一個錯誤,因爲

Add方法(捕獲#2嗎?)? (String)

我真的不知道該怎麼做。 ^^」

問候。

+2

圖出什麼類型的列表中的元素。你應該添加一個相同類型的元素(顯然不是String)。 – 2013-03-21 08:11:01

+2

如果你有一個無限類型的列表(''),你不能添加任何東西,你可以從它得到任何類型的'對象'。你需要綁定這個類型。嘗試'列表'。 – 2013-03-21 08:13:44

+0

@StijnHaus的元素是字符串。我沒有將它們保存爲'List '到這個文件中,並希望它們返回爲'List '...(Pastebin post:[link](http://pastebin.com/ N4JyqMSa)) – mezzodrinker 2013-03-21 08:15:45

回答

3

你真的想與getList加載您的項目?還有getStringList(...)可用。

因此,也許你可以嘗試:

config.getStringList("a.path").add("foo"); 
+2

'add(new String(「foo」))' - >'add(「foo」)' – 2013-03-21 08:18:31

+0

@BGR yes,sure :)我只是將我的代碼更改爲'add新的String())'然後想起的東西,裏面 – mezzodrinker 2013-03-21 08:27:13

+0

@BGR感謝寫指出。我已經編輯了我的答案。 – GeneSys 2013-03-21 08:45:57

0

?是通配符表示一個未知類型的,因爲你不知道的list<?>類型,所以你不能添加任何元素進去。

0

如果您確信它返回字符串列表,你可以將它轉換:

((List<String>)config.getStringList("a.path")).add("foo"); 
+0

如果使用'getStringList',則不必使用轉換到'List '... :) – mezzodrinker 2013-03-21 08:33:31

0

我認爲你必須更換<?><Object>那麼你可以添加任何這樣想IntegerString,等你的列表...

好運:)