gpt4 book ai didi

java - 在 Java 中实现 Vector 类的构造函数签名问题

转载 作者:行者123 更新时间:2023-12-01 18:10:57 26 4
gpt4 key购买 nike

我正在用 Java 构建一个基本的物理引擎,只是为了掌握该语言的窍门,我遇到了一个我认为我知道如何解决的问题,但不是以任何优雅的方式解决。

我希望我的 PVector 类有两种可能的构造函数,一种接受 x 和 y 坐标,另一种接受角度和半径。

例如,我们将 public PVector(double x, double y) 作为第一个的签名,将 public PVector(double arg, double rad) 作为第二。但是,众所周知,一个类中不能有两个具有相同签名的方法,因为 Java 无法知道要调用哪个方法。

我可以融合两个构造函数并采用第三个参数,例如 boolean 值(isPolar)或使用标志,但这两种方法看起来都很笨拙。我只是想知道在 Java 中做这样的事情最惯用、最明智的方法是什么。任何和所有建议将不胜感激。

最佳答案

改用静态工厂。

将构造函数设为私有(private),并使用适当的名称将静态方法设为公共(public):

public static PVector makeFromXAndY(double x, double y) {
return new PVector(...);
}

public static PVector makeFromArgAndRadius(double arg, double radius) {
return new PVector(...);
}

private PVector(double x, double y) {
....
}

Joshua Bloch 所著的《Effective Java》在这方面做得非常好。

关于java - 在 Java 中实现 Vector 类的构造函数签名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33057609/

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