gpt4 book ai didi

java - 当我使用组合时,我应该使用 "duplicate"字段吗?

转载 作者:行者123 更新时间:2023-11-30 02:08:40 26 4
gpt4 key购买 nike

我正在使用符号类(周期元素),其定义为:

enum Symbol{
n(0),
H(1),
He(2),
Li(3),
Be(4),
B(5),
C(6),
N(7),
O(8),
F(9),
Ne(10),
//...

private final int atomicNumber;

Symbol(int atomicNumber)
{
this.atomicNumber = atomicNumber;
}

public int getAtomicNumber() {return atomicNumber;}

我正在编写一个元素类(化学元素):

enum Element {
Neutron(Symbol.n, "Neutron"),
Hydrogen(Symbol.H, "Hydrogen"),
Helium(Symbol.He, "Helium"),
Lithium(Symbol.Li, "Lithium"),
Beryllium(Symbol.Be, "Beryllium"),
Boron(Symbol.B, "Boron"),
Carbon(Symbol.C, "Carbon"),
Nitrogen(Symbol.N, "Nitrogen"),
Oxygen(Symbol.O, "Oxygen"),
Fluorine(Symbol.F, "Fluorine"),
Neon(Symbol.Ne, "Neon"),
//...

private final Symbol symbol;
private final String name;

Element(Symbol symbol, String name)
{
this.symbol = symbol;
this.name = name;
}

public Symbol getSymbol(){return symbol;}
}

我希望我的 Element 类能够简单地访问 atomicNumber。我尝试禁止 setter/getter 链接:

// Chaining getters
Element.H.getSymbol().getAtomicNumber();

我应该使用以下哪一种解决方案?为什么?

解决方案 1:

private final Symbol symbol;
private final String name;
private final int atomicNumber; // I added a field to Element

Element(Symbol symbol, String name)
{
this.symbol = symbol;
this.name = name;
this.atomicNumber = symbol.getAtomicNumber();
}
// I implemented the corresponding getter (this.atomicNumber)
public int getAtomicNumber(){return atomicNumber;}

解决方案 2:

private final Symbol symbol;
private final String name;

Element(Symbol symbol, String name)
{
this.symbol = symbol;
this.name = name;
}

// I get atomicNumber from this.symbol
public int getAtomicNumber(){return symbol.getAtomicNumber());}

谢谢。

最佳答案

如果您认为不链接 getter 的便利性很重要,那么您应该使用第二种方法。复制字段很容易出错。尽管如此,你还是应该检查你的基本假设 - 我认为原子序数属于元素而不是符号;有一个元素周期表,而不是符号。

关于java - 当我使用组合时,我应该使用 "duplicate"字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50736293/

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