我有一个原型
的界面public interface genericInterface <E extends Comparable <E>>{}
现在我想在我的课堂上实现这个inerface,我在课堂定义中应该怎么做?以下行给出了一个错误(我已经实现了界面中的所有方法)
public class MyClass<Integer> implements genericInterface**<Integer Comparable<Integer>>**{ }
...语法
genericInterface<Integer Comparable<Integer>> -- error
genericInterface<Integer> -- error
我应该用<Integer Comparable<Integer>>
来代替{{1}}以使其兼容?
答案 0 :(得分:9)
类声明应该是:
class MyClass implements genericInterface<Integer>
类名后的通用参数用于该类的参数,而不是它正在实现的类。
所以,例如:
interface genericInterface<E extends Comparable <E>> {
E getKey();
}
class MyClass<T> implements genericInterface<Integer> {
T getValue();
}
MyClass<String> m = new MyClass<String>();
Integer a = m.getKey(); // Because MyClass always has E = Integer
String b = m.getValue(); // Because m has T = String
genericInterface<Integer> g = new MyClass<Boolean>();
Integer c = g.getKey();
你也可以这样做:
class MyClass<E extends Comparable <E>> implements genericInterface<E>
然后,您可以使用适用于MyClass
的任何类型参数化genericInterface
的实例。
答案 1 :(得分:0)
自1.5版以来,泛型仅在Java中提供。你应该使用原始类型。