【发布时间】:2017-01-20 21:00:42
【问题描述】:
我必须对两种类型的列表执行类似的方法。
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 方法来将每个实现中的列表设置为其特定的列表类型(WifiConfiguration 和ScanResult)。
看起来应该用 Generics 以某种方式实现,但我不确定我该怎么做.. 我确实需要以某种方式在开头声明每个列表的类型,正确?所以我可以传递一个匹配的List 类型。
我应该怎么做?
【问题讨论】:
-
为什么不使用方法类型参数呢?
-
为什么不这样呢?
public static <T> boolean doesListContain(List<T> list, T value){...}? -
但是这些类型是否扩展或实现
IWifiInfo? -
不,类型不扩展 IWifiInfo。 IWifiInfo 仅包含一些信息,我将与列表的项目信息进行比较。你们中的任何人都可以给我一个代码示例吗?应该是接口还是泛型类?
标签: java list generics types interface