让我用一个例子来描述我的意图,
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/