gpt4 book ai didi

java - 在 Java 中使用翻转参数调用方法

转载 作者:行者123 更新时间:2023-11-29 06:09:34 25 4
gpt4 key购买 nike

我有几个 Shape 的子类:

Rectangle, Circle, etc.

我在每个类中也有这样的方法:

class Rectangle extends Shape{
public void isIntersecting(Circle circle){ ... }
}

class Circle extends Shape{
public void isIntersecting(Rectangle rectangle){ ... }
}

这些方法显然是重复代码。我的问题是,如何避免这样的事情发生?

最佳答案

简单的答案是将(例如)Circle 的交集方法实现为:

public void isIntersecting(Rectangle rectangle) {
rectangle.isIntersecting(this);
}

我想不出更优雅的方法。


这样定义API方法的问题:

public void isIntersecting(Shape) { ... }

是你最终不得不为每个不同的形状编写一个带有 case 的“instanceof”开关。重复的代码仍然存在,并且您已经用可能更脆弱的东西替换了静态类型...

(据我所知,没有通用/有效的算法来测试两个任意形状是否相交。尤其是当形状涉及曲线时。)

关于java - 在 Java 中使用翻转参数调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7395978/

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