Java 查找对象的运行时类类型';s参数化注释

Java 查找对象的运行时类类型';s参数化注释,java,generics,marker-interfaces,Java,Generics,Marker Interfaces,我想检索在对象的参数化标记接口上找到的泛型类型的实际类。这可能吗 标记接口: 公共接口标记接口{} 我想要的方法是: 公共类查找ParameterizedMarkerinInterface的类(MarkerinInterface MarkedObject可扩展SomeRandomClass){ //如何检索类T或其名称? } 对于那些希望知道我为什么要这样做的人: 对于一些重jpa实体,我有多个dto jpa实体。我想创建一个通用服务,为提供的dto检索正确的完整实体spring数据jpa

我想检索在对象的参数化标记接口上找到的泛型类型的实际类。这可能吗

标记接口:

公共接口标记接口{}
我想要的方法是:

公共类查找ParameterizedMarkerinInterface的类(MarkerinInterface MarkedObject可扩展SomeRandomClass){
//如何检索类T或其名称?
}
对于那些希望知道我为什么要这样做的人:
对于一些重jpa实体,我有多个dto jpa实体。我想创建一个通用服务,为提供的dto检索正确的完整实体spring数据jpa存储库。dto有一个标记接口,该接口将完整实体类指定为参数化的泛型类型。

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

对对象本身使用
getClass()

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

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

返回: 表示此对象的运行时类的类对象。 另见: 文字,Java规范第15.8.2节™ 语言规范


他们不是这样问的
public class findClassForParametrizedMarkerInterface(MarkerInterface<T> markedObjectThatCouldExtendSomeRandomClass){

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

}