我在javax.swing.event.EventListenerList
个人Java项目中使用类时遇到麻烦。这不是一个简单的例子,所以我举了一个具有相同问题的简单示例。
package test;
public class GenericTest {
public static void main(String[] args) {
GenericTest gt = new GenericTest();
gt.doTest(String.class);
}
private void doTest(Class<? extends Comparable> type) {
doSomething(type, "test"); // Compile error :
// The method doSomething(Class<C>, C)
// in the type GenericTest is not applicable for the arguments
// (Class<capture#1-of ? extends Comparable>, String)
}
// third party API like javax.swing.event.EventListenerList.add()
private <C extends Comparable> void doSomething(Class<C> ct, C c) {
// ...
}
}
我在代码中遇到了泛型编译错误。
我有很多类都扩展了特定的接口,例如java.lang.Comparable
,我想用一种方法(如doTest()
代码中的代码)来处理所有这些类。
有人可以帮助我吗?
定义c
在doSomething
为Comparable
或String
:
doTest(String.class);
}
private static void doTest(Class<? extends Comparable> type) {
doSomething(type, "test");
}
// third party API like javax.swing.event.EventListenerList.add()
private static <C extends Comparable> void doSomething(Class<C> ct, Comparable c) {
// ...
}
请注意,你不能从隐式转换Object
,String
或Comparable
给C
。要获得更多见解,请doSomething
尝试执行以下操作:
C s = c; //Type mismatch: cannot convert from Comparable to C
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句