class Fruit{

}class Apple extends Fruit{

}public class Holder<T> {
T[] holder;

public void makeHolder(int size) {
holder = (T[])new Object[size];
holder = new T[size];
}

public static void main(String[] args) {
Holder<? extends Fruit> holder = new Holder<Apple>();
}
}在Holder泛型类中,为什么holder = new T[size]不能编译通过?我个人理解是T类型被擦除为Object,但是这没问题啊
在main函数中,编译器是如何知道holder的动态类型是否符合要求的?