gpt4 book ai didi

java - 为什么我们不能在泛型类中创建一个 "Concrete"类数组?

转载 作者:搜寻专家 更新时间:2023-11-01 02:27:44 26 4
gpt4 key购买 nike

public class GenericClass<T> {

class MyClass {
}

public GenericClass(final T[] param) {
MyClass myObject = new MyClass(); // OK
MyClass[] myArray = { new MyClass(), new MyClass() }; // Cannot create a generic array of GenericClass<T>.MyClass
}
}

这不是创建通用数组。编译器在理解/确定 MyClass 时应该没有问题,不是吗?

最佳答案

内部类“知道”封闭类的哪个实例创建了它们,并且可以访问该实例的字段/成员。就好像他们有第二个this类型为封闭类的具体类型的变量(例如 GenericClass<String> )。

为了克服这个困境,你可以制作MyClass static .这将使它与封闭类的任何实例完全分离(即:它不会有第二个 this ),因此它们可以自由实例化:

public class GenericClass<T> {

static class MyClass {
}

public GenericClass(final T[] param) {
MyClass myObject = new MyClass(); // OK
MyClass[] myArray = { new MyClass(), new MyClass() };
}
}

关于java - 为什么我们不能在泛型类中创建一个 "Concrete"类数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17758923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com