gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:09:43 24 4
gpt4 key购买 nike

我有一个抽象类,如下:

@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 注释有可能与多个构造函数混淆。

最佳答案

您是否尝试过简单:

{Object}.get class()?

关于Java如何从类型T中获取类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37128894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com