gpt4 book ai didi

Java抽象类传递扩展基类的任何一个子对象

转载 作者:行者123 更新时间:2023-12-02 04:50:16 24 4
gpt4 key购买 nike

我有一个抽象类,我想在其中创建一个可以传递扩展它的子实例的方法。

例如:

abstract class base
{
public void doSomething(Child1 or Child2){
}
}
class Child1 extends base
{
public void somefunc(){
doSomething(Child1);
}
}
class Child2 extends base
{
public void somefunc(){
doSomething(Child2);
}
}

我觉得有多种方法可以解决这个问题。是否有可能了解哪些可能的方法?我绝对不想在所有子类中创建相同的函数。

最佳答案

我不确定传递给 doSomething 的参数是否应该是 this,还是相同类型的单独对象。在第一种情况下,peter.petrov 的答案就是你想要的。在第二种情况下,解决此问题的标准方法是使 Base 通用并使用递归绑定(bind)。

abstract class Base<T extends Base<T>> {

public void doSomething(T t) {}
}

class Child1 extends Base<Child1> {

public void someFunc() {
Child1 child1 = new Child1();
doSomething(child1);
}
}

class Child2 extends Base<Child2> {

public void someFunc() {
Child2 child2 = new Child2();
doSomething(child2);
}
}

关于Java抽象类传递扩展基类的任何一个子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304203/

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