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

时间:2017-09-24 22:17:36

标签: 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);
    }
}

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

2 个答案:

答案 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)