gpt4 book ai didi

java - 为什么会有两个具有相同签名的构造函数?

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:56 24 4
gpt4 key购买 nike

有两个具有相同签名的构造函数有哪些用例?

编辑:你不能在 Java 中这样做,因为 Effective Java 说你需要静态工厂。但我想知道为什么您首先需要这样做。

最佳答案

认为想要这样做的原因是您发现自己处于变量类型不足以提供上下文的情况。

例如,我可能会自欺欺人地认为我需要为我的 Point 类提供两个构造函数:一个按 X 和 Y 工作,一个按度数和弧度工作。两者都可以表示为 float 。

所以我认为我需要两个具有相同签名(float、float)的构造函数。

博士。 Bloch 指出最好是制作工厂方法:


public static Point newPointByDegreesAndRadians (float degrees, float radians);
public static Point newPointByXandY (float x, float y);

顺便说一句,工厂方法的另一种替代方法是创建携带数据类型中缺少的上下文的类型,如下所示:


public class CoordinatesXY {
float X;
float Y;
...
}
public class CoordinatesDegreesRadians {
float degrees;
float radians;
...
}
public Point (CoordinatesXY coordinates) { ... }
public Point (CoordinatesDegreesRadians coordinates) { ... }

您是否认为这比工厂方法更清晰是个人喜好问题。对于这种特定情况,我个人的感觉是,只有当您的设计使坐标独立于坐标中的一个点并独立于这些坐标时,这两个坐标类才有用。

关于java - 为什么会有两个具有相同签名的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2842232/

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