我正在创建一个泛型类,并且在其中一个方法中我需要知道当前使用的泛型类的Class.原因是我调用的方法之一将此作为参数.
例:
public class MyGenericClass<T> {
public void doSomething() {
// Snip...
// Call to a 3rd party lib
T bean = (T)someObject.create(T.class);
// Snip...
}
}
Run Code Online (Sandbox Code Playgroud)
显然,上面的示例不起作用并导致以下错误:类型参数T的非法类文字.
我的问题是:有人知道一个很好的选择或解决方法吗?
我有一个接口,我想在其中提供默认方法来序列化继承的类。我使用一个JsonSerializer<T>类来进行序列化。
该方法如下所示:
public interface A
{
public default String write()
{
new JsonSerializer</*Inherited class type*/>();
// I've tried new JsonSerializer<this.getClass()>(); - Doesn't work
}
}
public class AX implements A
{
}
Run Code Online (Sandbox Code Playgroud)
所以当我实例化AX时,我想使用write方法来序列化AX
AX inst = new AX();
String instSerialized = inst.write();
Run Code Online (Sandbox Code Playgroud)
我需要将 AX 的类型传递给 A 中的 write 方法。这可能吗?