接受接口列表或实现列表的方法

j.d*_*doe 2 java generics interface

我有一个接口和几个实现。我想创建一个方法,它可以接受接口集合及其任何实现的集合。

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法是否可以接受List<ITest>List<Test1>作为其参数?

shm*_*sel 5

只需修改签名以接受List<? extends ITest>

private static List<ITest> method(List<? extends ITest> test) {
    return Collections.unmodifiableList(test);
}
Run Code Online (Sandbox Code Playgroud)