2013-03-21 56 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,等你的列表...

好运:)