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
我知道我可以使用常量字符串来制作这样的东西,但我实际上想要传递一个Coin对象
我也尝试过像这样在Coin类中初始化EUR
static EUR euro = new EUR();
但IDE警告我这可能导致线程死锁
答案 0 :(得分:5)
对于枚举来说,这是一个完美的工作:
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);