使用Java泛型从类名获取类型

new*_*bie 2 java generics

我有以下类,我需要在构造函数中输入类型,我该怎么做?

public abstract class MyClass<T> {
    public MyClass()
    {
        // I need T type here ...
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

以下是我想要实现的具体示例:

public abstract class Dao<T> {
    public void save(GoogleAppEngineEntity entity)
    {
        // save entity to datastore here
    }

    public GoogleAppEngineEntity getEntityById(Long id)
    {
        // return entity of class T, how can I do that ??
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是将此类扩展到所有其他DAO,因为其他DAO有一些特定于那些daos的查询并且不能是通用的,但这些简单查询通常应该可用于所有DAO接口/实现......

dpl*_*ass 7

你可以在某种程度上得到它......不确定这是否有用:

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

abstract class MyClass<T> {
  public MyClass() {        
    Type genericSuperclass = this.getClass().getGenericSuperclass();
    if (genericSuperclass instanceof ParameterizedType) {
      ParameterizedType pt = (ParameterizedType) genericSuperclass;
      Type type = pt.getActualTypeArguments()[0];
      System.out.println(type); // prints class java.lang.String for FooClass
    }
  }
}

public class FooClass extends MyClass<String> { 
  public FooClass() {
    super();
  }
  public static void main(String[] args) {
    new FooClass();
  }
}
Run Code Online (Sandbox Code Playgroud)