将对象插入列表通配符扩展接口
Insert object into List wildcard extending interface
所以我有一个接口
public interface Identity {
abstract void setKey(String key);
abstract String getKey();
}
我想用于插入排序函数
public static void InsertIdentity(Identity identity, ArrayList<? extends Identity> list) {
int i = 0;
Identity id;
while (i < list.size()) {
if ((id = list.get(i)).getKey().compareTo(identity.getKey()) < 0) {
i++;
}else{break;}
}
list.add(i, identity);
}
但显然我不能将身份添加到 ArrayList - ?扩展身份
我想知道是否有办法解决这个问题?
我知道 Java 有其他方法可以完成这项任务,但我希望这个功能能正常工作。
你可以method generic:
public static <T extends Identity> void InsertIdentity(T identity, ArrayList<T> list) {
//...
如果您使用这种方法,您可能还需要使其他方法通用。
我建议如下:
public static <I extends Identity> void InsertIdentity(I identity, ArrayList<I> list)
这可行,具体取决于您将如何使用 InsertIdentity 方法:
public static <T extends Identity> void InsertIdentity(T identity, ArrayList<T> list) {
所以我有一个接口
public interface Identity {
abstract void setKey(String key);
abstract String getKey();
}
我想用于插入排序函数
public static void InsertIdentity(Identity identity, ArrayList<? extends Identity> list) {
int i = 0;
Identity id;
while (i < list.size()) {
if ((id = list.get(i)).getKey().compareTo(identity.getKey()) < 0) {
i++;
}else{break;}
}
list.add(i, identity);
}
但显然我不能将身份添加到 ArrayList - ?扩展身份
我想知道是否有办法解决这个问题?
我知道 Java 有其他方法可以完成这项任务,但我希望这个功能能正常工作。
你可以method generic:
public static <T extends Identity> void InsertIdentity(T identity, ArrayList<T> list) {
//...
如果您使用这种方法,您可能还需要使其他方法通用。
我建议如下:
public static <I extends Identity> void InsertIdentity(I identity, ArrayList<I> list)
这可行,具体取决于您将如何使用 InsertIdentity 方法:
public static <T extends Identity> void InsertIdentity(T identity, ArrayList<T> list) {