gpt4 book ai didi

java - 查找对象参数化注释的运行时类类型

转载 作者:行者123 更新时间:2023-12-01 16:08:49 24 4
gpt4 key购买 nike

我想检索在对象的参数化标记接口(interface)上找到的通用类型的实际类。这可能吗?

标记界面:

public interface MarkerInterface<T> {}

我想要的方法:

public class findClassForParametrizedMarkerInterface(MarkerInterface<T> markedObjectThatCouldExtendSomeRandomClass){

//How to retrieve the class T, or it's name?

}

对于那些想知道我为什么要这样做的人:对于一些重型 jpa 实体,我有多个 dto jpa 实体。我想创建一个通用服务,为提供的 dto 检索正确的完整实体 spring 数据 jpa 存储库。 dto 有一个标记接口(interface),该接口(interface)将完整的实体类指定为参数化泛型类型。

最佳答案

编辑:可以在Get generic type of class at runtime 找到一个很好的讨论。 .最简单的解决方案是在实例化对象时传递对类的引用。维护对此类的引用以在需要时返回。这是由于 Java 在运行时没有保留泛型。如果您想使用详细的反射 API 来检索通用信息,则通用信息在元数据中可用。

<罢工>使用getClass()在对象本身上。

公共(public)最终类 getClass()返回此对象的运行时类。返回的 Class 对象是被表示类的静态同步方法锁定的对象。实际结果类型是 Class where |X|是调用 getClass 的表达式的静态类型的删除。例如,此代码片段中不需要转换:

数字 n = 0;类 c = n.getClass();

返回:表示此对象的运行时类的 Class 对象。也可以看看:文字,Java™ 语言规范第 15.8.2 节。

<罢工> http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#getClass()

关于java - 查找对象参数化注释的运行时类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24824317/

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