我有一堂课如下:
public class Foo {
private double A;
private double B;
...
private double K;
}
Run Code Online (Sandbox Code Playgroud)
它应该包含 11 个紧密结合的参数 AK,它描述地球轨道上一点的运动(一种坐标)。我的意思是,它们不能被划分为子类或其他有意义的部分,因为它们都具有相同的目的和含义。所有这些参数都应该在构造函数内一起实例化,因此另一个类可以使用Foo这 11 个字段进行必要的计算。我收到关于构造函数内参数数量太多的评论。
是否有另一种方法可以Foo在不使用巨型构造函数(某种映射)的情况下初始化对象?希望我说得足够清楚,如果不是,我会提供更多细节。
您可以使用varargsofdouble作为构造函数的参数并检查其大小以确保它是预期的大小。
就像是:
public class Foo {
private double A;
private double B;
...
private double K;
public Foo(double... coordinates) {
if (coordinates == null || coordinates.length != 11) {
throw new IllegalArgumentException("Unexpected size of coordinates");
}
this.A = coordinates[0];
this.B = coordinates[1];
...
this.K = coordinates[10];
}
...
}
Run Code Online (Sandbox Code Playgroud)
这样,您在构造函数中只定义了一个参数11,但为了简单起见,您仍然可以提供值,如下所示:
Foo foo = new Foo(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0);
Run Code Online (Sandbox Code Playgroud)
您仍然可以将其作为以下array内容提供double:
Foo foo = new Foo(new double[]{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |