具有不同具体类型的接口实现作为方法参数

时间:2011-12-04 18:54:51

标签: java generics

我想在接口中有一个接受任何类型的通用对象的方法,比如

public void myMethod(List<?>);

现在实现应该只接受某种类型,例如。实现1:

public void myMethod(List<Integer>);

实施2:

public void myMethod(List<String>);

但是这不起作用,因为public void myMethod(List<Integer>);不是public void myMethod(List<?>);的有效实现

我怎么能实现这个目标? (除了使用对象参数,因此依赖于转换并手动进行类型检查)

2 个答案:

答案 0 :(得分:2)

除非我遗漏了一些明显的东西(这对我的喜好太多了),为什么不让界面本身通用呢?

public interface MyInterface<T> {
   public void myMethod(List<T> list);
}

可以这样实现:

public class MyClass<T> implements MyInterface<T> {

   @Override
   public void myMethod(List<T> list) {
      // TODO complete this!      
   }

}

并像这样使用:

public class Foo {
   public static void main(String[] args) {
      MyClass<String> myString = new MyClass<String>();
      MyClass<Integer> myInt = new MyClass<Integer>();
   }
}

答案 1 :(得分:0)

您可能需要输入类型:http://docs.oracle.com/javase/tutorial/java/generics/gentypes.html

例如,使用public void myMethod(List<T>);

用于您的界面,然后您的具体类将使用您想要的类型进行实例化。 `