我是Java的新手(来自Actionscript 3.0背景),并且尝试将一些ActionScript代码移植到Java(as3signals到jsignal)
我试图获取泛型类的类名,以将其传递给超级调用。
在ActionScript 3.0中,这将是
super(Vector.<TileVO>,Boolean);
上面的代码会将类引用传递给TileVO和Boolean的Vector的构造函数。
在Java中,这似乎不起作用,我知道我做错了什么:
super(ASVector.class<TileVO>,boolean.class);
简而言之,如何获得由TileVO对象组成的ASVector类的类引用?
谢谢!
以后编辑:
我只是意识到代码未正确显示(视为html)
发布一些源代码:
public Signal(Class<?>... params) {
this.params = params;
}
我需要通过构造函数传递给Signal类引用。
new Signal(int.class)
例如有效我需要知道如何将这种形式的对象的类传递给Signal的构造函数:
ASVector<TileVO>
我尝试了
ASVector.class<TileVO>
,它似乎不起作用! 最佳答案
在您的情况下,在编译时,通用类型参数<TileVO>
会“擦除”;编译器将它们的某些用法转换为隐式强制转换,但是有关它们的信息已在字节码中丢弃。这意味着对于您的API,没有ASVector<TileVO>
的特定类型,运行时类型仅为ASVector
,因此您传入了ASVector.class
。如果运行时处理程序有必要知道ASVector
的内容是TileVO
对象,则还需要在varargs中的某个时刻将TileVO.class
作为参数传递。