java - 如何声明 getParameterTypes() 返回类型的变量?

标签 java generics reflection

我想声明一个由 getParameterTypes() 返回类型的变量,但出现错误。我也收到 getTypeParameters() “无法解析为类型”的相同错误。 如何做到这一点?

  Class<?> lcSeqHolder = null;
  TypeVariable<Method> lcTypeHolder = null;

  // Use reflection to find the take method
  Method[] lcMethods = mcSpecificReader.getDeclaredMethods();
  for (Method lcMethod : lcMethods)
  {
     System.out.println(lcMethod.getName());
     if (lcMethod.getName().equals(TAKE_METHOD_NAME))
     {
        lcSeqHolder = lcMethod.getParameterTypes()[SEQUENCE_HOLDER_ARG_INDEX];
        lcTypeHolder = lcMethod.getTypeParameters()[SEQUENCE_HOLDER_ARG_INDEX];

        lcSeqHolder  var1;  // <-- lcSeqHolder cannot be resolved to a type
        lcTypeHolder  var2; // <-- lcTypeHolder cannot be resolved to a type
     }
  }

最佳答案

你不能,而且几乎肯定不需要。变量的类型需要在编译时知道,但显然你并不知道。

大多数时候,您应该将变量声明为 Object 类型 - 毕竟,这就是您真正了解的所有内容。如果您确实了解更多(出于某种原因),请使用您所知道的任何内容(例如某些接口(interface))来声明它们并进行适当的转换。

假设您没有更多信息,无论如何您都无法使用更具体的类型 - 那么您希望通过将变量声明为特定类型来获得什么类型?

关于java - 如何声明 getParameterTypes() 返回类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427526/

相关文章:

java - 如何使用 Web 表单轻松创建和编辑 XML 文档

c# - 如何将 C# 对象拆箱为动态类型

java - (?) 通配符泛型的不规则性

java - 返回未知类型

c# - 如何在工厂中使用通用接口(interface)

java - 通过java中的反射填充默认值

c# - 我如何在 C# 中遍历内部属性

java - 将 session 工厂从一项服务传递到另一项服务

java - 为什么我收到 : [Oracle][ODBC][Ora]ORA-00904: invalid identifier

java - JLabel 未添加到 JPanel