Java 如何播放列表<;映射<&燃气轮机&燃气轮机;进入列表<;地图<;字符串,字符串>>;?
我正在制作bukkit插件,其中一个函数返回Java 如何播放列表<;映射<&燃气轮机&燃气轮机;进入列表<;地图<;字符串,字符串>>;?,java,casting,Java,Casting,我正在制作bukkit插件,其中一个函数返回ListgetMapList返回类型List>circle=FileManager.area.getMapList(“circles”); 您可以通过强制转换为原始类型来丢弃所有泛型,(列表): List circle=(List)FileManager.area.getMapList(“circles”); 请注意,与大多数类型转换一样,这是不安全的-最好找到一种方法来传递正确的类型信息,正如其他答案所建议的那样。Map是Map的子类型,但由于泛型
ListgetMapList
返回类型List>circle=FileManager.area.getMapList(“circles”);
您可以通过强制转换为原始类型来丢弃所有泛型,(列表)
:
List circle=(List)FileManager.area.getMapList(“circles”);
请注意,与大多数类型转换一样,这是不安全的-最好找到一种方法来传递正确的类型信息,正如其他答案所建议的那样。Map
是Map
的子类型,但由于泛型不是不变的,这并不意味着List
是List的一个子类型主要用于从某些定义的值赋值,如:
Map m=新的HashMap()
而且使用是不好的,因为您需要显式地强制转换它(这意味着您事先知道您的运行时类型)
通常,您会显式指定返回值。因此,让我们通过案例来了解:
1) 您需要编写非常通用的函数,该函数获取字符串并返回List>,然后您可以这样编写
<K, V> List<Map<K, V>> getMapList(String s) {
...
}
List getMapList(字符串s){
...
}
Java将根据您分配给的对象推断K,V的类型
2) 您希望返回某些特定类型,然后使用该类型:
<Integer, String> List<Map<Integer, String>> getMapList(String s) {
...
}
List getMapList(字符串s){
...
}
您的确切错误是什么。问问题时,一定要把你的准确错误贴出来。错误是任何编程语言的有意义的响应。不发布类似于说“我的车坏了,请帮助”并附上一张车的图片。确切的错误-列表-请帮助不能使用列表
代替?抱歉,这是bukkit API的方法,我无法更改it@MarounMaroun尽管如此,编译器对类型非常挑剔,只允许精确映射。记住?
是一个源代码集合,PECS,etc@XsergeiX这个答案建议更改您的声明,而不是API的声明
List<Map<?, ?>> circle = FileManager.area.getMapList("circles");
List<Map<String, String>> circle = (List) FileManager.area.getMapList("circles");
List<Map<String, String>> circle = (List<Map<String, String>>) (Object) FileManager.area.getMapList("circles");
<K, V> List<Map<K, V>> getMapList(String s) {
...
}
<Integer, String> List<Map<Integer, String>> getMapList(String s) {
...
}