java如何从类型t获取类对象?

bkhjykvo  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(253)

我有一个抽象类,如下所示:

@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
    }
}

我知道我有两个选择来解决这个问题。执行类似的操作,其中我在子类中执行((parameteredType)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);
    }
}

我想知道是否有更好的方法来实现这一点。特别是如果我想确保类型安全,而不必为开发人员编写太多的子类代码。第二种方法很好,但是每个必须处理这个问题的子类似乎都有点烦人,更不用说springjava@autowiredannotation有可能与多个构造函数混淆。

nx7onnlm

nx7onnlm1#

你有没有试过:
{object}.get class()?

相关问题