Java 如何将对象传递给接受T值的方法?

Java 如何将对象传递给接受T值的方法?,java,generics,Java,Generics,我需要调用的方法需要myMethod(final Class clazz,final T value) 我有一个java.lang.reflect.Field和一个对象,希望这样调用:myMethod(Field.getType(),value) 这就是我陷入问题的地方 The method myMethod(Class<T>, T) in the type XXX is not applicable for the arguments (Class<capture#8-of

我需要调用的方法需要
myMethod(final Class clazz,final T value)

我有一个
java.lang.reflect.Field
和一个对象,希望这样调用:
myMethod(Field.getType(),value)

这就是我陷入问题的地方

The method myMethod(Class<T>, T) in the type XXX is not applicable for the arguments (Class<capture#8-of ?>, Object)
XXX类型中的方法myMethod(类,T)不适用于参数(类,对象) 我能做些什么来让它工作

谢谢

我猜(因为我没有代码)您对它的调用与

Object a = ...
myClass.myMethod(a.class, a);
但是除非你像这样构造你的
myClass
,否则这是行不通的

MyClass myClass = new MyClass( ... something that binds T to Object ...);

如果您有一个绑定到不同类型的
myClass
,比如更具体的类型,那么
myClass
将不接受
对象,因为它受到限制(在编写
MyClass
或编译实例化
MyClass
的代码时,将方法签名更改为:

<T> void myMethod(final Class<? extends T> clazz, final T value)

void myMethod(最后一节课问题的解决方案是进行以下转换:

myMethod((Class<Object>) field.getType(), value)
myMethod((类)字段.getType(),值)

请发布您的代码。您如何调用该方法?该方法
getTyoe
返回一个
,而这不是
值的类型
@EdwinDalorzo是的..我的类型是Object..问题仍然存在..我能做什么?@guilheremussi它只是一个静态方法…@Teshte不是很明显吗?您不能使用
字段.getType()
因为它没有告诉你
值的实际类型
。你必须通过
值的实际类才能使它工作。在我看来,你似乎想要求更多的东西,但从你的问题来看,这对我来说并不明显,或者它没有透露足够的细节来进一步说明。该方法在静态方式…它的定义如下:
publicstaticvoidsetinservicecontext(final Class clazz,final T value){…}
…该类对T一无所知。问题是在
myMethod
中,而不是在
System.out.println
中,我需要调用具有以下签名的方法:
IEclipseContext.set(Class clazz,T value)
…因此,根据您的建议,我只是在移动问题..当我想在调用公共静态void myMethod(Class)之前从上面调用集合时,我会得到相同的错误
myMethod((Class<Object>) field.getType(), value)