Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将对象插入列表通配符扩展接口_Java_Interface_Insert_Wildcard_Extends - Fatal编程技术网

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

Java 将对象插入列表通配符扩展接口,java,interface,insert,wildcard,extends,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; whil

所以我有一个接口

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);
}
公共静态void InsertIdentity(Identity-Identity,ArrayList您可以:

publicstaticvoidinsertidentity(T标识,ArrayList列表){
//...

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

我建议如下:

public static <I extends Identity> void InsertIdentity(I identity, ArrayList<I> list) 
公共静态void InsertIdentity(I标识,ArrayList列表)

这可能会起作用,具体取决于您将如何使用InsertIdentity方法:

public static <T extends Identity> void InsertIdentity(T identity, ArrayList<T> list) {
publicstaticvoidinsertidentity(T标识,ArrayList列表){

的可能重复。还有很多问题需要解决……我知道它为什么不起作用,我希望有人能帮我找到解决方法。解决方法是不要用上界通配符声明您的参数。但这样一来,它就破坏了函数的目的。您显然想让您的方法在这需要一个类型参数:
void insertIdentity(T identity,List){…}
。顺便说一句:继续使用Java的代码约定,并在适当的地方使用接口。非常感谢!我之前曾尝试过这样做,但没有成功。现在我知道了!非常感谢!我之前尝试过这样做,但没有成功。现在我知道了!
public static <T extends Identity> void InsertIdentity(T identity, ArrayList<T> list) {