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

时间:2015-04-23 08:48:05

标签: java interface insert wildcard extends

所以我有一个界面

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有其他方法可以完成这项任务,但我希望这个功能能够正常工作。

3 个答案:

答案 0 :(得分:4)

你可以制作method generic

public static <T extends Identity> void InsertIdentity(T identity, ArrayList<T> list) {
    //...

如果使用这种方法,您可能还需要使其他方法也是通用的。

答案 1 :(得分:3)

我建议如下:

public static <I extends Identity> void InsertIdentity(I identity, ArrayList<I> list) 

答案 2 :(得分:2)

这可以使用,具体取决于您将如何使用InsertIdentity方法:

public static <T extends Identity> void InsertIdentity(T identity, ArrayList<T> list) {