Java中的泛型 - 实现接口

时间:2014-02-11 15:03:00

标签: java generics

我有一个原型

的界面
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}}以使其兼容?

2 个答案:

答案 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中提供。你应该使用原始类型。