我必须对两种类型的列表执行类似的方法。
private List<WifiConfiguration> wifiConfigurations;
private List<ScanResult> mScanResults;
我需要扫描两个列表并查找某些特定项目,因此我想创建一个接口(interface)来包装它们,然后实现每个 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
方法来将每个实现中的列表设置为其特定的列表类型(WifiConfiguration
和 ScanResult
)。
看起来应该用泛型以某种方式实现,但我不太确定我该怎么做..我确实需要以某种方式在开头声明每个列表的类型,正确?所以我可以传递一个匹配的 List
类型。
我该怎么办?
最佳答案
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) {
...
}
}
关于java - android - 为两个列表包装器创建通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39466987/