【发布时间】:2021-03-11 03:39:12
【问题描述】:
我有这门课
class GameLoaderClass<V> {
V classValue = null;
Class<?> aClass;
ClassType classType;
public GameLoaderClass(ClassType classType, Class<?> aClass) {
this.classType = classType;
this.aClass = aClass;
}
public V getClassType(String name) {
if (this.classType == ClassType.FIELD) {
return this.classValue = aClass.getDeclaredField(name);
} else
return this.classValue = aClass.getMethod(name);
}
但我收到以下错误..
所需类型:C 提供:方法
有什么办法解决吗,谢谢
【问题讨论】:
-
定义类
class GameLoaderClass<V extends java.lang.reflect.Member>并使用类型转换return this.classValue = (V)aClass.getMethod(name); -
@onkarruikar 是的,铸造它有效,但不安全,我想知道是否有没有铸造的方法
-
@Mekdbd 您希望将
Method对象分配给classValue,还是希望将classValue分配给名为name的方法返回的值? -
@GauthamM 是的,我希望将方法对象分配给 classValue,但对象也可以是字段,我只想将值作为通用返回而不进行强制转换。
-
您必须向编译器保证您将为变量分配一个可赋值的值。因此需要演员阵容。在方法
getClassType上使用@SuppressWarnings("unchecked")。
标签: java generics lambda reflection