我有一个界面和几个实现。我想创建一个方法,它既可以接受接口集合,也可以接受任何实现的集合。
import com.google.common.collect.ImmutableList;
import java.util.Collections;
import java.util.List;
public class Main {
public interface ITest {
}
public static class Test1 implements ITest {
}
public static void main(String[] args) {
ITest t1 = new Test1();
List<ITest> lt1 = ImmutableList.of(t1);
Test1 t2 = new Test1();
List<Test1> lt2 = ImmutableList.of(t2);
buildIntRange(lt1);
buildIntRange(lt2);
}
private static List<ITest> method(List<ITest> test) {
return Collections.unmodifiableList(test);
}
}
该方法是否可以接受List<ITest>
和List<Test1>
作为参数?
答案 0 :(得分:4)
只需修改签名即可接受List<? extends ITest>
:
private static List<ITest> method(List<? extends ITest> test) {
return Collections.unmodifiableList(test);
}
答案 1 :(得分:0)
您可以将方法设为通用,如下所示:
public static <T extends ITest> List<T> method(List<T> test)