gpt4 book ai didi

java接口(interface)方法输入本身

转载 作者:行者123 更新时间:2023-12-02 02:19:48 27 4
gpt4 key购买 nike

我有一个接口(interface),它有一个接受自身的方法,例如

public interface Vehicle {
void bump(Vehicle other);
}

现在,我想以这样的方式实现此接口(interface),即车辆只会碰撞到其自己类型的车辆。也就是说,我想要诸如

public class BumperCar implements Vehicle {
public void bump(BumperCar other){
System.out.println("They bounce off harmlessly and continue going.")
}
}

public class Train implements Vehicle {
public void bump(Train other){
System.out.println("Breaking news: Dozens die in horrible train on train collision.")
}
}

但是 BumperCars 和 Trains 之间的碰撞没有任何作用,即使这两个类都必须实现碰撞(车辆)。实现这一目标的最佳方法是什么?

最佳答案

由于 Java 无法在类中使用 self 类型,因此通常使用称为“模拟自类型”的通用构造:

abstract class Vehicle<T extends Vehicle<T>> {
public abstract void bump(T other);
}

public class Car extends Vehicle<Car> {
@Override public void bump(Car other) {}
}

唯一需要注意的是,必须始终在类声明中指定类型。

在核心 Java 库中,模拟自类型用法的一个示例是 Enum类。

关于java接口(interface)方法输入本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672145/

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