String'i eşdeğer Enum değerine dönüştür


Yanıtlar:


224

java.util.EnumerationJava 1.5 Enum türlerinden farklı olduğunu fark etmişsinizdir .

YourEnum.valueOf("String")Eşdeğer enum türünü elde etmek için kullanabilirsiniz .

Dolayısıyla, numaranız şu şekilde tanımlanmışsa:

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
    THURSDAY, FRIDAY, SATURDAY
}

Bunu yapabilirsin:

String day = "SUNDAY";

Day dayEnum = Day.valueOf(day);


18

Java 5 numaralandırması kullandığınızı varsayarsak (eski Enumerationsınıftan bahsettiğiniz için çok da kesin değildir ), alt sınıf valueOfyöntemini kullanabilirsiniz java.lang.Enum:

MyEnum e = MyEnum.valueOf("ONE_OF_CONSTANTS");

8

valueOf(String)Her biri için tanımlanan statik yöntemi kullanın enum.

Örneğin eğer varsa enum MyEnumsöyleyebilirsinMyEnum.valueOf("foo")


4

Type.valueOf("enum string")Gerçekte var olduğunun farkına varmadan kendi çözümümü aşırı mühendislikten geçirmiş olabilirim.

Sanırım daha ayrıntılı kontrol sağlıyor ama gerçekten gerekli olduğundan emin değilim.

public enum Type {
    DEBIT,
    CREDIT;

    public static Map<String, Type> typeMapping = Maps.newHashMap();
    static {
        typeMapping.put(DEBIT.name(), DEBIT);
        typeMapping.put(CREDIT.name(), CREDIT);
    }

    public static Type getType(String typeName) {
        if (typeMapping.get(typeName) == null) {
            throw new RuntimeException(String.format("There is no Type mapping with name (%s)"));
        }
        return typeMapping.get(typeName);
    }
}

Ne alışverişi konum tahmin IllegalArgumentExceptioniçin RuntimeException(ya da her türlü istisnası atmak isteyen) hangi olabilir, potansiyel olarak temiz yukarı kodu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.