Java 无法实例化类型LinqMap
我从2011年起就是一名Java开发人员,由于我已经多次看到这些错误,所以通常在掌握这些错误方面没有问题。即使是这个我也见过很多,我通常知道如何解决它 然而,今天我遇到了一个奇怪的问题,从它的意思来看,我无法理解问题到底是什么 所以我是一个模仿者,特别是对Minecraft和Bukkit来说。然而,这与问题完全无关,因为这与语言本身有关,而不是任何用它制作的库 这就是错误所在 无法实例化类型LinqMap 通常当我看到这一点时,我认为这是因为我试图使用的类型,或者是接口,或者是抽象的,或者指定的构造函数是私有的或者没有定义的,但是其中一些确实有自己的错误,但这是我通常检查的 我还注意到,在堆栈溢出上有很多这种错误的副本,但是大多数副本似乎指向实例化列表的方向,该列表是一个接口,或者指向某个抽象的自定义类。如果不是因为我已经检查了这个事实,结果也不是问题所在,这也是一样的 因此,我最初尝试使用的代码如下所示Java 无法实例化类型LinqMap,java,Java,我从2011年起就是一名Java开发人员,由于我已经多次看到这些错误,所以通常在掌握这些错误方面没有问题。即使是这个我也见过很多,我通常知道如何解决它 然而,今天我遇到了一个奇怪的问题,从它的意思来看,我无法理解问题到底是什么 所以我是一个模仿者,特别是对Minecraft和Bukkit来说。然而,这与问题完全无关,因为这与语言本身有关,而不是任何用它制作的库 这就是错误所在 无法实例化类型LinqMap 通常当我看到这一点时,我认为这是因为我试图使用的类型,或者是接口,或者是抽象的,或者指定的
HashMap<Integer,? extends ItemStack> stackmap = new LinqMap<Integer,? extends ItemStack>(player.getInventory().all(prototype.getType()));
这仍然不起作用,所以我尝试使用空构造函数,结果是这样的
HashMap<Integer,? extends ItemStack> stackmap = new LinqMap<Integer,? extends ItemStack>();
HashMap stackmap=new LinqMap();
这仍然导致了错误,这让我非常惊讶,因为对象是一个类,它除了是public之外没有修饰符,并且包含参数less的构造函数都是空的
那么这里有什么问题?为什么我不能在代码明确允许的情况下创建一个LinqMap实例
另外,这里有一个类的小片段供参考,它是我定制的,是C#(未发布)的Linq端口
import java.util.HashMap;
导入java.util.Map;
公共类LinqMap扩展了HashMap{
/**
*
*/
私有静态最终长serialVersionUID=1796259800183459223L;
公共LinqMap(最终地图其他){
对于(Map.Entry项:other.entrySet()){
this.put(item.getKey(),item.getValue());
}
}
公共LinqMap(){
}
/* ... */
}
在Java中,不允许直接实例化通配符类型?
。如果您至少使用Java 7进行编译,那么我建议您只需利用以下优势:
Map Map=player.getInventory().all(prototype.getType());
HashMap stackmap=新的LinqMap(map);
谢谢!这就成功了。我也希望早点知道钻石推理法。
HashMap<Integer,? extends ItemStack> stackmap = new LinqMap<Integer,? extends ItemStack>();
import java.util.HashMap;
import java.util.Map;
public class LinqMap<K,V> extends HashMap<K,V> {
/**
*
*/
private static final long serialVersionUID = 1796259800183459223L;
public LinqMap(final Map<K,V> other) {
for (Map.Entry<K, V> item : other.entrySet()) {
this.put(item.getKey(), item.getValue());
}
}
public LinqMap() {
}
/* ... */
}
Map<Integer, ? extends ItemStack> map = player.getInventory().all(prototype.getType());
HashMap<Integer, ? extends ItemStack> stackmap = new LinqMap<>(map);