将对象插入列表通配符扩展接口

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) {