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
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我想初始化一个通过欧元作为硬币的人,而不创造新的欧元.就像是
static final EUR euro = EUR
Run Code Online (Sandbox Code Playgroud)
然后:
Person person = new Person(... , euro);
Run Code Online (Sandbox Code Playgroud)
我不需要数百万欧元的实例,所以我不想每次都创造新的欧元
我知道我可以使用常量字符串来制作这样的东西,但我实际上想要传递一个Coin对象
我也试过像这样在Coin类中初始化EUR
static EUR euro = new EUR();
Run Code Online (Sandbox Code Playgroud)
但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;
}
}
Run Code Online (Sandbox Code Playgroud)
一旦定义了它,就可以使用枚举常量:
Person person = new Person(... , Coin.EUR);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |