Java:获得generics类型

我正在为c ++编写Java包装器,并希望使用generics类来包装c ++模板。 因此,我想将generics类型作为String,以便我可以进一步将其传递给JNI并实例化相应的c ++对象。

编辑:这是我实现它的方式,以防有人感兴趣:

public class A { private long ptr; public static  A create(Class cls) { return new A(cls); } private A(Class cls) { ptr = create( cls.getName() ); if(ptr == 0) { throw new NullPointerException(); } } private native long create(String className); } 

由于类型擦除 ,Javagenerics不会在编译时保留类型信息。 您需要将T类的实例传递给A类:

 public class A { private Class type; private long ptr; public class A(Class type) { this.type = type; ptr = create( getGenericType() ); if(ptr == 0) { throw new NullPointerException(); } } private String getGenericType() { return type.getName(); } private native long create(String className); }