Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法实例化类型LinqMap_Java - Fatal编程技术网

Java 无法实例化类型LinqMap

Java 无法实例化类型LinqMap,java,Java,我从2011年起就是一名Java开发人员,由于我已经多次看到这些错误,所以通常在掌握这些错误方面没有问题。即使是这个我也见过很多,我通常知道如何解决它 然而,今天我遇到了一个奇怪的问题,从它的意思来看,我无法理解问题到底是什么 所以我是一个模仿者,特别是对Minecraft和Bukkit来说。然而,这与问题完全无关,因为这与语言本身有关,而不是任何用它制作的库 这就是错误所在 无法实例化类型LinqMap 通常当我看到这一点时,我认为这是因为我试图使用的类型,或者是接口,或者是抽象的,或者指定的

我从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);