gpt4 book ai didi

Java 泛型 - 有界类型参数

转载 作者:行者123 更新时间:2023-11-29 08:31:47 26 4
gpt4 key购买 nike

让我用一个例子来描述我的意图,

class Base {
public void sayHi() {
System.out.println("Hi");
}
}

class ChildOne extends Base {
public void sayBye() {
System.out.println("Bye-1");
}
}

class ChildTwo extends Base {
public void sayBye() {
System.out.println("Bye-2");
}
}

public class MainClass {
public static <T extends Base> void genericFunction(T child) {
child.sayBye();
}

public static void main(String[] args) {
ChildOne childOne = new ChildOne();
ChildTwo childTwo = new ChildTwo();
genericFunction(childOne);
genericFunction(childTwo);
}

}

这段代码是错误的。但我的意图是子类(项目中一些已经存在的类)它们之间具有相似的属性,它们扩展基类并具有 sayBye() 成员函数。

有没有办法将所有子类作为参数传递给泛型函数并调用成员函数 sayBye()(如本例所示)?

最佳答案

当然,您可以为所有具有sayBye 方法的类创建一个公共(public)基类或公共(public)接口(interface)。

然后您可以更改泛型类型参数的类型绑定(bind):

public static <T extends CommonInterface> void genericFunction(T child) {
child.sayBye();
}

或者没有泛型:

public static void nonGenericFunction(CommonInterface child) {
child.sayBye();
}

关于Java 泛型 - 有界类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47435349/

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