gpt4 book ai didi

java - 检索泛型类型的类实例而不将泛型作为输入

转载 作者:行者123 更新时间:2023-12-02 08:40:33 25 4
gpt4 key购买 nike

我有一个类:

public abstract class BaseDaoImpl<T extends BaseModel> implements BaseDao<T> {
}

我还使用注释来生成 SQL 查询(由于各种原因我无法使用 hibernate 等框架),例如 @Table 和 @Column

我希望能够检索 <T extends BaseModel> .class实例而不必采取 T作为方法的输入。

我认为简单的替代方法是创建一个方法:

public void set(Class<T> clazz){}

但是,如果可能的话,我想避免这种情况,以使我的代码尽可能精简。这可能吗?

最佳答案

虽然使用反射有点代码味道,但你可以获得你需要的信息:

Class<T> modelImplementationClass = (Class<T>)
((BaseModel)this.getClass().getGenericSuperclass())
.getActualTypeArguments()[0];

Reflection 是一个 Java API,允许您在运行时访问或修改方法、类、接口(interface)的行为。

反射通常应该避免,因为它非常慢并且通过揭示内部实现细节来破坏抽象。

关于java - 检索泛型类型的类实例而不将泛型作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59056782/

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