Java如何从类型T获取类对象?

时间:2016-05-10 03:40:52

标签: java spring reflection

我有一个抽象类如下:

@Component
public abstract class B<T extends C, S extends D>{
    @Autowired
    private JpaRepository repository;
    public void add(){
        repository.add(); //this add method takes an argument of a class object of T 
    }
    public void delete(){
        repository.delete();//this add method takes an argument of a class object of S
    }
}

我意识到我有两种方法可以解决这个问题。做一些类似于this的事情 ((ParameterizedType)getClass()。getGenericSuperclass())。getActualTypeArguments() 或者我做类似下面的事情(在子类中不完全但你得到了这个想法:

@Component
public abstract class B<T extends C, S extends D>{
    @Autowired
    private JpaRepository repository;
    private Class<T> classT;
    private Class<S> classS;
    public B(Class<T> classT, Class<S> classS){
        this.classT = classT;
        this.classS = classS;
    }
    public void add(){
        repository.add(); //this add method takes an argument of a class object of T 
    }
    public void delete(){
        repository.delete();//this add method takes an argument of a class object of S
    }
}
public class A extends B<X, Y>{
    public A(){
        super(X.class, Y.class);
    }
}

我想知道是否有更好的方法来实现这一目标。具体来说,如果我想确保类型安全而不必为子类开发人员编写太多代码。第二种方法本来没问题,但是每个必须处理这个问题的子类似乎有点烦人,不仅仅是提到Spring Java @Autowired注释有可能与多个构造函数混淆。

1 个答案:

答案 0 :(得分:-1)

你试过简单:

{Object} .get class()?