java – 为什么我不能创建泛型类型的内部类的数组?

以下代码给出了“通用数组创建”错误.

public class TestClass<K, V> {
    Entry[] entry;

    private TestClass() {
        entry = new Entry[10]; // <--- this line gives generic array creation error
    }

    private class Entry {
        public Entry() {

        }
    }
}

我想知道为什么会这样,因为类Entry不是泛型类,并且没有泛型类型的对象.

是因为内部类仍然可以访问泛型类型,即使它不使用任何类型?这是我能想到的最好的,但如果是这样的话,我不明白为什么Java看起来不会看到它不使用泛型类型,因此不是泛型类?

是的,我看过许多关于泛型类型数组的线程,但是没有,我没有找到一个关于内部类的线程.

最佳答案
类型实际上是TestClass< K,V> .Entry(是的,因为它是一个内部类).您可以通过将其转换为嵌套的静态类来解决此问题:

private static class Entry {
    public Entry() {

    }
}

转载注明原文:java – 为什么我不能创建泛型类型的内部类的数组? - 代码日志