it-swarm.com.de

Wie konvertiere ich den enum-Wert in int?

Ich habe eine Funktion, die einen Typ int zurückgibt. Ich habe jedoch nur einen Wert für die TAX-Aufzählung.

Wie kann ich den TAX-Enumerationswert in ein int umwandeln?

public enum TAX {
    NOTAX(0),SALESTAX(10),IMPORTEDTAX(5);

    private int value;
    private TAX(int value){
        this.value = value;
    }
}

TAX var = TAX.NOTAX; // This value will differ

public int getTaxValue()
{
  // what do do here?
  // return (int)var;
}
205
vrbilgi

Sie müssten das Enum value irgendwie anzeigen lassen, z.

public enum Tax {
    NONE(0), SALES(10), IMPORT(5);

    private final int value;
    private Tax(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

...

public int getTaxValue() {
    Tax tax = Tax.NONE; // Or whatever
    return tax.getValue();
}

(Ich habe die Namen geändert, um etwas konventioneller und lesbarer zu sein, übrigens.)

Dies ist vorausgesetzt Sie wollen den Wert im Konstruktor vergeben. Wenn Sie dies nicht wünschen, müssen Sie uns weitere Informationen geben.

311
Jon Skeet

Ich bevorzuge das:

public enum Color {

   White,

   Green,

   Blue,

   Purple,

   Orange,

   Red
}

dann:

//cast enum to int
int color = Color.Blue.ordinal();
187
vivia

Wenn Sie den Wert, den Sie im Konstruktor zuweisen möchten, hinzufügen möchten, müssen Sie der Enumendefinition eine Methode hinzufügen, um diesen Wert zurückzugeben.

Wenn Sie eine eindeutige Nummer wünschen, die den Aufzählungswert darstellt, können Sie ordinal() verwenden.

17
unholysampler

Irgendwann macht ein C # -Ansatz das Leben in der Java-Welt einfacher.

class XLINK {
static final short PAYLOAD = 102, ACK = 103, PAYLOAD_AND_ACK = 104;
}
//Now is trivial to use it like a C# enum:
int rcv = XLINK.ACK;
11
Vladi

Vielleicht ist es besser, eine String-Darstellung als eine Ganzzahl zu verwenden, da der String noch gültig ist, wenn der Aufzählung Werte hinzugefügt werden. Sie können die name () - Methode der Enumeration verwenden, um den enum-Wert in einen String umzuwandeln, und die valueOf () - Methode der Enumeration, um erneut eine Enumendarstellung aus der Zeichenfolge zu erstellen. Das folgende Beispiel zeigt, wie der Aufzählungswert in String und zurück konvertiert wird (ValueType ist eine Aufzählung):

ValueType expected = ValueType.FLOAT;
String value = expected.name();

System.out.println("Name value: " + value);

ValueType actual = ValueType.valueOf(value);

if(expected.equals(actual)) System.out.println("Values are equal");
2
Mike
public enum Tax {

NONE(1), SALES(2), IMPORT(3);

private final int value;
    private Tax(int value) {
        this.value = value;
    }

    public String toString() {
        return Integer.toString(value);
    }
}

class Test {
    System.out.println(Tax.NONE);    //Just an example.
}
0
Ieshaan Saxena