我想在接口中有一个接受任何类型的通用对象的方法,比如
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<?>);
的有效实现
我怎么能实现这个目标? (除了使用对象参数,因此依赖于转换并手动进行类型检查)
答案 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>);
用于您的界面,然后您的具体类将使用您想要的类型进行实例化。 `