gpt4 book ai didi

java - 我怎样才能有一个接受类型为 "my type"的参数的抽象方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:25 26 4
gpt4 key购买 nike

假设我有一个带有抽象方法的抽象类 Animal

public abstract Animal mateWith(Animal mate);

问题是,如果我创建子类 Snake 和 Armadillo,这样的调用将是合法的:

mySnake.mateWith(myArmadillo);

但我只希望蛇能够与蛇交配。我需要能够定义这样的东西:

public abstract Animal_Of_My_Class mateWith(Animal_Of_My_Class mate);

这在 Java 中可行吗?

最佳答案

自界泛型来拯救:

abstract class Animal<T extends Animal<T>> {
abstract T mateWith(T mate);
}

然后:

class Animal_Of_My_Class extends Animal<Animal_Of_My_Class> {
Animal_Of_My_Class mateWith(Animal_Of_My_Class mate) { ... }
}

请注意,您不能约束 T成为实现类(例如,您不能要求 Animal_Of_My_Class extends Animal<Animal_Of_My_Class> 而不是 Animal_Of_My_Class extends Animal<Another_Animal_Of_My_Class>)。

关于java - 我怎样才能有一个接受类型为 "my type"的参数的抽象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42022430/

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