3

重複の可能性:
Java での文字列を使用した Switch ステートメント

私は次のコードを使用していますが、 switch でそれを行う方法があるかどうか疑問に思っています。これは、型名が型文字列であるため、デフォルトとして使用しない理由です (このオプションは 1.7 バージョンでサポートされていることは知っていますが、私は1.6 を使用する必要があります) この問題を克服する方法はありますか?

public static SwitchInputType<?> switchInput(String typeName) {

        if (typeName.equals("Binary")) {
            return new SwitchInputType<Byte>(new Byte("23ABFF"));
        }
        else if (typeName.equals("Decimal")) {
            return new SwitchInputType<BigDecimal>(new BigDecimal("A"));
        }
        else if (typeName.equals("Boolean")) {
            return new SwitchInputType<Boolean>(new Boolean("true"));
4

2 に答える 2

3

他の回答で説明されているように、Java 1.6 を使用している場合、文字列で switch ステートメントを使用することはできません。

最善の方法は、文字列値の代わりに列挙子を使用することです。

public static SwitchInputType<?> switchInput(InputType type) {
    switch(type){
        BINARY:
            return new SwitchInputType<Byte>(new Byte("23ABFF"));
        DECIMAL:
            return new SwitchInputType<BigDecimal>(new BigDecimal("A"));
        BOOLEAN:
            return new SwitchInputType<Boolean>(new Boolean("true"));
    }
}

どこ:

public enum InputType{
    BINARY, DECIMAL, BOOLEAN // etc.
}

アップデート:

Fieldクラスにプロパティを追加しますInputType fieldType。次に、ループ内で:

MemberTypeRouting.switchInput(field.getFieldType());
于 2013-01-24T08:36:57.677 に答える
2

文字列を使用したスイッチは、Java 7 以降でのみサポートされています。残念ながら、古いバージョンではサポートされていなかったため、Java 6 では使用できず、既に使用している if/else ステートメントを使用する必要があります。

数年前に尋ねられたこの質問も参照してください: なぜ文字列をオンにできないのですか?

于 2013-01-24T08:20:56.667 に答える