java - 将类视为常数

标签 java constants

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/

相关文章:

java - JFrame连续调用函数来检查结果

java - Glassfish server4 1 上的 sqljdbc4 2

java - 使用我自己的组件自定义 JTable 单元格编辑器

c++ - std::vector 元素中的常量引用

python - 在 Python 中正确使用类常量

Java 常量变量,命名约定

java - 在 Android 中发现标签时如何识别 mifare classic 和 mifare ultralight

java - 如何在 Spring 项目中使用 Deployed Resources/web-resources/中的属性文件

scala - 最终 val 会增加对象大小吗?

c++ - 如何使用 cpp 将宏转换为字符串?