在非泛型类中实现泛型接口

时间:2014-07-10 17:16:43

标签: java generics

我想在类中实现通用接口。 考虑实现这个通用接口:

public interface Lookup<T>{
  public T find(String name);
}

这是实现Lookup的非泛型类:

public class IntegerLookup implements Lookup<Integer>{
  private Integer[] values;
  private String[] names;

  public IntegerLookup(String[] names, Integer[] values) {......}
  //now I want to write the implemented method - find

我的问题是: 我该如何编写这个实现的方法? 我需要覆盖它吗?是吗?

public Object find(String name){...}

会好吗?或者:

public Integer find(String name){...}

2 个答案:

答案 0 :(得分:3)

这里的语法

public class IntegerLookup implements Lookup<Integer>{
//                                           ^

绑定提供的类型参数,即。 IntegerLookup声明的类型变量,即。 T

所以,

public Integer find(String name){...}

这与做

相同
Lookup<Integer> lookup = ...;
lookup.find("something"); // has a return type of Integer

答案 1 :(得分:0)

从您的评论中,您确实希望使用Object作为返回类型。我无法想象您为什么要这样做,但如果是这样,您实际上需要实施Lookup< Object >,而不是Lookup< Integer >

但不要这样做。使用Integer作为返回类型,因为该类型代表您实现中的T