gpt4 book ai didi

java - 如何将泛型参数转换为类

转载 作者:行者123 更新时间:2023-12-02 05:19:43 25 4
gpt4 key购买 nike

public abstract class BaseDaoImpl<E extends AbstractEntity> implements BaseDao<E> {

.....

public BaseDaoImpl() throws DataAccessException {
logger = LoggerFactory.getLogger(E); <<-- error here.
}

在上面的代码中,我在调用 getLogger(E) 时遇到错误.

E cannot be resolved to a variable

这是有道理的,但是 getLogger(E.class) (或其变体)也不起作用。

我不想在构造函数中传递文字类,因此解决方案是将构造函数 header 更改为:
public BaseDaoImpl(Class<E> clazz) ...不是一个选项。

如何从 E 获取类类型?

请注意以下答案:How to get class of generic type when there is no parameter of it?
别帮忙。

最佳答案

如果不更改构造函数,您就无法在运行时了解任何您尚未静态了解的有关 E 的信息。这是因为在 Java 中,泛型参数根本不存在任何运行时效果——编译器实际上会删除它生成的代码中对 E 的所有引用。因此,如果您想要代码能够告诉其类型参数正在实例化哪个类,则必须自己添加某种参数(例如 Class 对象)。没有办法解决这个问题。

关于java - 如何将泛型参数转换为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15390756/

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