3

我目前正在编写一个 bukkit 插件(bukkit 是我的世界服务器类型;)),在那里,你在一个名为YamlConfiguration的类中有一个方法,它具有以下方法:

public List<?> getList(String path)

我的问题是:我想从这个返回的列表中添加和/或删除元素。但是当我尝试通过

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

eclipse 抛出一个错误,因为

List<capture#2-of ?> 类型中的方法 add(capture#2-of ?) 不适用于参数 (String)

我真的不知道该怎么办。^^'

问候。

4

5 回答 5

3

您真的要加载您的项目getList吗?还有getStringList(...)可用的。

所以也许你可以试试:

config.getStringList("a.path").add("foo");
于 2013-03-21T08:15:18.747 回答
2

List<?> list可以指向任何类型的列表,例如List<String> 或List<Integer> 或任何其他。这意味着您不知道实际列表是什么,因此您只能添加null到此列表中。在本教程中阅读更多内容http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html

于 2013-03-21T08:18:28.807 回答
0

?是表示未知类型的通配符,因为您不知道的类型,list<?>因此您无法向其中添加任何元素。

于 2013-03-21T08:18:17.570 回答
0

如果你确定它返回一个字符串列表,你可以转换它:

((List<String>)config.getStringList("a.path")).add("foo");
于 2013-03-21T08:20:51.847 回答
0

我认为您必须替换<?><Object>然后您可以将任何想法添加到您IntegerString列表中...

祝你好运 :)

于 2013-03-21T08:22:29.647 回答