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