我是java新手(来自Actionscript 3.0背景),我正在尝试将一些actionscript代码移植到java(as3signals到jsignal)
我正在尝试获取通用类的类名,以便将其传递给 super 调用。
在 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
对象,您还需要传入 TileVO.class
作为可变参数中某个点的参数。
关于java - 如何获取泛型类的类引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491781/