gpt4 book ai didi

java - 从通用类型参数中检索高级信息

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

我想知道 Java 12(至少需要 Java 8)是否有可能调用 T.class在泛型类型参数上,或者是否有一些解决方法?

由于我反对一遍又一遍地重写相同的代码逻辑,所以我对调用 T.class 感到好奇。将任何类型的 Java 对象传递给我的方法并编写一些映射功能来处理 Optional<T>展开逻辑。

public SpecificEntity specific(final Long id) throws EntityNotFoundException {
final Optional<SpecificEntity> optional = this.specificEntityRepository.findById(id);
if (optional.isEmpty()) {
throw new EntityNotFoundException(SpecificEntity.class, "id", id.toString());
}
return optional.get();
}

我希望可以像这样重写上面的代码:

public <T> T generic(final Optional<T> optional, final Long id) throws EntityNotFoundException {
if (optional.isEmpty()) {
throw new EntityNotFoundException(T.class, "id", id.toString());
}
return optional.get();
}

最佳答案

一个简单的解决方案是向函数添加一个参数 Class<T> ,你可以这样调用它:

generic(optionalOfInteger, Integer.class, 0) ,举个例子

您可以使用的另一种方法涉及利用反射,记录如下:Get type of a generic parameter in Java with reflection

但是,请记住,基于反射的方法可能会非常慢。

关于java - 从通用类型参数中检索高级信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57043656/

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