簡體   English   中英

java enums但是喜歡public static final int?

[英]java enums but like public static final int?

我想要一個與整數1,2,3相關的常量列表,如A,B,C

我知道你可以這樣做

class Example {
    public static final int A = 1;
    etc...
}

enum Example {
    A(1), ... etc;
    some initialization of an integer
}

但有沒有辦法像公共靜態決賽那樣做,但像枚舉一樣簡潔? 當我使用A時,我的意思是1我不想調用Example.A.value或類似的東西。

一種方法是使用接口,默認情況下變量是public,static和final:

interface Example {
    int A = 1;
    int B = 2;
}

如果我理解你正確的要求,你想做這樣的事情:

enum Example {
    A = 1,
    B = 2,
    ....
}

這沒有簡單的語法。

你要么必須寫出一些常量:

public interface Example {
    public static final int A = 1;
    public static final int B = 2;
    ....
}

...或者您可以為枚舉添加一些其他value

public enum Example {
    A(1),
    B(2)
    ....

    private final int val;

    public Example (int val) {
        this.val = val;
    }

    public int getValue() {
        return val;
    }
}

我認為最短的解決方案是:

public static final int A = 1, B = 2, C = 3;

如果你真的想使用Enum,那么你可以覆蓋枚舉中的toString()方法,以便在打印枚舉實例時獲得打印值: -

enum Example {
    A(1), B(2);

    private int val;

    private Example(int val) {
        this.val = val;
    } 

    @Override
    public String toString() {
           switch (this) {
             case A:
                  return String.valueOf(val);

             case B:
                  return String.valueOf(val);

            }
            return super.toString();
    }
}

public class D {
    public static void main(String[] args) {    

        Example a = Example.A;
        Example b = Example.B;

        System.out.println(a);  // Prints 1
        System.out.println(b);  // Prints 2
    }
}

理想情況下,您的上述枚舉就像下面的類: -

class Example {
    public static final int A = 1;
    public static final int B = 2;
}

所以,我沒有看到使用Enums的必要性..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM