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)