use*_*643 2 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
}
}
Run Code Online (Sandbox Code Playgroud)
你不能,而且几乎肯定不需要.变量的类型需要在编译时知道,显然你不知道它.
大多数情况下,你应该只声明变量类型Object- 毕竟你真正了解它们.如果您确实知道更多(由于某种原因),请用您知道的任何内容(例如某些界面)声明它们并适当地进行投射.
假设您没有任何其他信息,那么无论如何都无法使用更具体的类型 - 那么您希望通过将变量声明为特定类型来获得什么?
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |