abstract class Coin{
String name;
String currency;
class EUR extends Coin{
EUR() {
super("EUR", "€");
}
}
class USD extends Coin{
USD() {
super("USD", "$");
}
}
private Coin (String name, String currency){
this.name = name
this.currency = currency}
}
class Person{
///variables
Coin coin;
Person(//Variables, Coin coin){
//Other assignments
this.coin = coin
}
}
基本上我想初始化一个将欧元作为硬币传递的人,而不创建新的欧元。 类似的东西
static final EUR euro = EUR
然后:
Person person = new Person(... , euro);
我不需要数百万个 EUR 实例,因此我不想每次都创建新的 EUR
我知道我可以使用常量字符串制作类似的东西,但我实际上想传递一个 Coin 对象
我还尝试在 Coin 类中初始化 EUR,如下所示
static EUR euro = new EUR();
但是 IDE 警告我这可能会导致线程死锁
最佳答案
这对于枚举来说是一项完美的工作:
public enum Coin {
EUR("EUR", "€"),
USD("USD", "$");
private String name;
private String currency;
private Coin(String name, String currency) {
this.name = name;
this.currency = currency;
}
}
定义后,您可以使用枚举常量:
Person person = new Person(... , Coin.EUR);
关于java - 将类视为常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47336483/