Java使用泛型创建新类

Java使用泛型创建新类,java,generics,reflection,Java,Generics,Reflection,我的程序遇到了一个问题,给定一个对象和一个属性名,我想返回方法的返回类型 public static Class<?> getAttributeType(Object object, String attributeName) { try { Method method = object.getClass().getMethod( "get" + StringUtils.capitalize(attributeName));

我的程序遇到了一个问题,给定一个对象和一个属性名,我想返回方法的返回类型

public static Class<?> getAttributeType(Object object, String attributeName) {
     try {
         Method method = object.getClass().getMethod(
             "get" + StringUtils.capitalize(attributeName));
         return method.getReturnType();
     } catch (Exception e) {
          throw new RuntimeException("Unable to find the attribute:"
              + attributeName + " in class: "
              + object.getClass().getName());
     }
}
公共静态类getAttributeType(对象对象,字符串attributeName){
试一试{
Method=object.getClass().getMethod(
“get”+StringUtils.capitalize(attributeName));
return方法。getReturnType();
}捕获(例外e){
抛出新的RuntimeException(“找不到属性:”
+类中的attributeName+“
+object.getClass().getName());
}
}
除非方法的返回类型定义了泛型,否则此解决方案非常有效。例如,如果所讨论的方法原型是List getBooks(),那么上面的代码将只返回一个列表而不是一个列表。我有没有办法做到这一点?我可以很容易地得到泛型类型,我只是不知道一旦有了它该怎么办


提前感谢

要获取方法的通用返回类型,请使用该方法。这将返回一个类型,然后对该类型进行测试并向下转换为一个类型,然后可以查询该类型的类型参数。

要获取方法的通用返回类型,请使用该方法。这将返回一个类型,然后对该类型进行测试并向下转换为一个类型,然后可以查询该类型的参数。

不是所有的东西都可以通过反射实现,而是使用一个类似于的字节码库


在中描述了这种方法。

并不是所有的东西都可以通过反射实现,而是使用一个字节码库,如


作为一种最佳实践,我建议您将原始异常“e”作为抛出的RuntimeException的源。您将获得很多时间来访问原始异常,即说明真正出错的异常。很好,您提供了带有上下文的附加消息:-),作为最佳实践,我建议您将原始异常“e”作为您抛出的RuntimeException的源。您将获得很多时间来访问原始异常,即说明真正出错的异常。很好,您提供了带有上下文的附加消息:-)