gpt4 book ai didi

java - 列表的子类化如何工作?

转载 作者:行者123 更新时间:2023-12-02 00:12:10 25 4
gpt4 key购买 nike

我十分钟前问了一个类似的问题,但粘贴了错误的代码片段。对此我感到非常抱歉。

我目前面临基类和子类的问题。

虽然有一个对象作为参数(单个方法),但编译器不会提示。

但是如果涉及到列表,编译器会强制我将列表声明为 <? extends Base>

此后,我不再被允许将基本类型的对象添加到该列表中。

错误消息:“Generics.C 类型中的方法 list(List ) 不适用于参数 (List )”

public class Generics {

class Base { }

class Sub extends Base{ }

interface I {
public void list( List<Base> list );
public void single( Base list );
}

class C implements I {
public void list( List<Base> b) { }
public void single( Base p) { }
}

void test() {
C c = new C();
c.single( new Sub() );
List<Sub> b = new ArrayList<Sub>();
c.list( b ); // error message as above
}

public static void main( String[] args) {
Generics g = new Generics();
g.test();
}
}

除了将 list-methods 参数声明为类型 <? extends Base> 之外,还有其他方法吗? ?

最佳答案

以下是两种方法......

public void list(List<? extends Base> list){

}

或者

public <T extends Base> void list(List<T> list){

}

关于java - 列表的子类化如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12569142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com