gpt4 book ai didi

java内部类私有(private)构造函数,公共(public)成员

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:58 24 4
gpt4 key购买 nike

我想知道这是否是设计类的首选方式;如果不是,有什么问题以及更好的选择是什么?

class Calculator {

public Calculator(Input input) {...};
CalculatorOutput output;

class CalculatorOutput {
private CalculatorOutput() {} //private constructor - so no one other than Calculator can instantiate this class
Double someCalcStuff;
List<Double> someOtherCalcStuff;
}

public void calculate() {
CalculatorOutput op = new CalculatorOutput();
//..after this function populates the someCalcStuff & someOtherCalcStuff; it just returns an instance of CalculatorOutput
}

...
return op;

}

//usage

Calculator.CalculatorOutput result = new Calculator(input).calculate();
for (Double d: result.someOtherCalcStuff) {...}

我将 CalculatorOutput 作为 Calculator 的内部类的原因是因为它除了返回计算器的输出之外没有其他目的或上下文。我将 CalculatorOutput 的成员设置为 public b/c 我真的没有看到将它们设为 private ,然后通过 getter/setter 访问的意义...因为我不希望继承这个内部类,或者执行本文中提到的任何其他功能: Why use getters and setters?

用户无法实例化内部类(私有(private)构造函数),因此我没有看到创建内部类的公共(public)可访问成员(CalculatorOutput)的真正缺点

具体问题:

  • 这种方法不好吗?为什么?
  • 实现这一目标的更好方法是什么?

最佳答案

为了使代码更简洁,我要做的是创建一个计算器包并将以下类添加到该包中:

  1. 计算器
  2. 计算器输出

我将进行以下更改:(使成员私有(private)并在需要时提供 getter 和 setter)

class Calculator {
private CalculatorOutput output;

public Calculator(Input input) {/* logic here */}

// getters and setters
}

class CalculatorOutput {

private Double someCalcStuff;

private List<Double> someOtherCalcStuff;

// getters and setters

CalculatorOutput() {}
}

public class Test{

public static void main(String [] args)
{
Calculator calc = new Calculator();

CalculatorOutput output = new CalculatorOutput();

// use methods as needed
}
}

关于java内部类私有(private)构造函数,公共(public)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530862/

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