Java 泛型类型,强制转换为方法,字段

Java 泛型类型,强制转换为方法,字段,java,generics,lambda,reflection,Java,Generics,Lambda,Reflection,我有这门课 class GameLoaderClass<V> { V classValue = null; Class<?> aClass; ClassType classType; public GameLoaderClass(ClassType classType, Class<?> aClass) { this.classType = classType; this.aClass = aClass; } public V get

我有这门课

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);

}
class游戏加载类{
V classValue=null;
类aClass;
类类型类类型;
公共GameLoaderClass(类类型,类aClass){
this.classType=classType;
this.aClass=aClass;
}
public V getClassType(字符串名称){
if(this.classType==classType.FIELD){
返回this.classValue=aClass.getDeclaredField(名称);
}否则
返回this.classValue=aClass.getMethod(名称);
}
但我得到以下错误

所需类型:C 提供:方法


有什么方法可以修复它吗?谢谢

我最好使用返回类型
对象
,而不是使用泛型

公共成员getClassType(字符串名称){
if(this.classType==classType.FIELD){
返回aClass.getDeclaredField(名称);
} 
返回aClass.getMethod(名称);
}
在你调用你能做的方法的地方

Member obj=loader.getClassType(“someName”);
if(字段的实例){
字段f=(字段)obj;
//做剩下的
}else/*假设字段或方法是可能的返回对象类型*/{
方法m=(方法)obj;
//做剩下的
}

编辑:根据@Onkar的评论,最好返回
Member
类型的对象,而不是
object
,因为
方法和
字段都实现
Member

类GameLoaderClass那样定义类,并使用类型转换
返回该类值=(V)aClass.getMethod(名称)
@onkarruikar是的,它可以工作,但不安全,我想知道是否有办法不使用它cast@Mekdbd您想将
方法
对象分配给
类值
还是想将
类值
分配给名为
名称
的方法返回的值?@GauthamM是的,我想要方法对象被分配给classValue,但对象也可以是字段,我只想在不强制转换的情况下将值作为泛型返回。您必须确保编译器将为变量分配一个可分配的值。因此需要强制转换。使用
@SuppressWarnings(“未选中”)
方法
getClassType
java.lang.reflect.Member
比Object@onkarruikar是的,这是一个很好的信息updated@onkarruikar是的,这是一个很好的解决方案,但我想使用泛型,这样我就可以使用Method=new GameLoaderClass().getClassType(ClassType.Method);@Mekdbd您仍然可以这样做吗?
Method Method=(Method)new GameLoaderClass(ClassType.Method,SomeClass.class)。getClassType(“someName”);
@GauthamM我希望使用泛型而不强制转换