我必须在两种类型的列表上执行类似的方法。
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类型(WifiConfiguration
和ScanResult
)。
看起来应该用 Generics 以某种方式实现,但我不确定我该怎么做..我确实需要以某种方式在每个列表的类型中声明每个列表,正确?所以我可以传递匹配的List
类型。
我应该怎么做?
答案 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) {
...
}
}