小编nix*_*x_s的帖子

Class<T[]> 类型传入的参数

我正在尝试制作一个通用的 Stack 类,如图所示

public class Stack<T> {
    public Stack(Class<T[]> type, int capacity) {
        this.capacity = capacity;
        array = type.cast(Array.newInstance(type,capacity));
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不确定实例化时要放入什么类型,因为我想做

MyClass[] c = new MyClass[0];
myStack = new Stack<MyClass>(c.getClass(), 100);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误

Required type: Class <MyClass[]>
Provided: Class <capture of ? extends MyClass[]>
Run Code Online (Sandbox Code Playgroud)

所以我想用

c.getClass().cast()\
Run Code Online (Sandbox Code Playgroud)

但我不确定要在cast()中放入什么,因为它不需要

Class<MyClass[]>
Run Code Online (Sandbox Code Playgroud)

现在我被困住了。

java generics stack casting class

0
推荐指数
1
解决办法
71
查看次数

标签 统计

casting ×1

class ×1

generics ×1

java ×1

stack ×1