android - 为两个List包装器创建通用接口

时间:2016-09-13 09:48:23

标签: java list generics types interface

我必须在两种类型的列表上执行类似的方法。

private List<WifiConfiguration> wifiConfigurations;
private List<ScanResult> mScanResults;

我需要扫描两个列表并查找一些特定项目,所以我想我会创建一个包装它们的接口,然后实现每个doesListContains方法。

public interface IWifiListWrapper {
    boolean doesListContains(IWifiInfo wifiInfo);
    //  <T> void setList(List<T> wifiList);
}

例如,一个实现是:

public class ScanResultsListWrapper implements IWifiListWrapper {

    private List<ScanResult> mScanResults;

    @Override
    public boolean doesListContains(IWifiInfo wifiInfo) {
       ...
    } 
}

这一切都很好。

现在,我还需要使用setList方法将每个实现中的列表设置为其特定的List类型(WifiConfigurationScanResult)。

看起来应该用 Generics 以某种方式实现,但我不确定我该怎么做..我确实需要以某种方式在每个列表的类型中声明每个列表,正确?所以我可以传递匹配的List类型。

我应该怎么做?

1 个答案:

答案 0 :(得分:1)

public interface IWifiListWrapper<T> {
    boolean doesListContains(IWifiInfo wifiInfo);
    void setList(List<T> wifiList);
}

您还可以添加类似T extends WifiInfo的输入限制。

public class ScanResultsListWrapper implements IWifiListWrapper<ScanResult>      {
    private List<ScanResult> mScanResults;

    @Override
    public boolean doesListContains(IWifiInfo wifiInfo) {    
        ...
    } 
    @Override
    public void setList(List<ScanResult> wifiList) {
        ...
    }
}