接受两种类型的Collection <T>和<T>的通用类型接口

Unh*_*lig 1 java generics java-8

以下Interface允许我这样做displayReuestResponse<String>:

public interface RequestResponse<T> 
{
    void displayRequestResponse(T output);
}
Run Code Online (Sandbox Code Playgroud)

另一方面,以下Interface允许我通过LinkedHashSet或者ArrayList:

public interface RequestResponse<T>
{
    void displayRequestResponse(Collection<T> output);
}
Run Code Online (Sandbox Code Playgroud)

我只是好奇,我们是否可以通过(调整)Interface可以接受这两种类型的方式使其更通用?或者这不可能吗?

Tom*_*yre 8

用java 8你可以做类似的事情

interface RequestResponse<T>     {

    default void displayRequestResponse(Collection<? extends T> output) {
        output.foreach(this::displayRequestResponse);
    }

    void displayRequestResponse(T output);
}
Run Code Online (Sandbox Code Playgroud)

因此,您不必实现在每个具体实现中采用集合的重载.