我是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作为参数传递。

07-24 13:16