LINUX.ORG.RU

Java & enum


0

0

Подскажите в Java есть аналог enum из C++??? Что бы можно было так:

char ch = '+';

enum Value { PLUS = '+', MINUS = '-'... };

Value myVal = Value(ch);

Если можно, запостите пример.

Спасибо.

★★

class Value {
    public static Value PLUS = new Value('+');
    public static Value MINUS = new Value('-');
    public static Value get(char c) {
        return c == '+' ? PLUS : MINUS;
    }
    private Value(char c) {
        this.c = c;
    }
    private char c;
}

Value m = Value.get('+');

А вообще в новой Java enum'ы поддерживаются на уровне языка.

Kpoxman ★★
()
Ответ на: комментарий от Kpoxman

Поддерживаться то они поддерживаются, но вот только на сишные енамы не похожи, другой функционал... Решение данной задачи с их помощтю аналогично тому что вы написали.

Ian ★★
() автор топика
Ответ на: комментарий от Ian

Enum-ы есть в J2SE 5.0.

Вот рабочий кусочек кода:

public abstract class Comparison {
    protected COMPARE_OP op;
    
    public enum COMPARE_OP {
        EQ, NEQ;
        
        public boolean isTrue(String s1, String s2) {
            switch(this) {
                case EQ:  return  s1.equals(s2);
                case NEQ: return !s1.equals(s2);
            }

            return false;
        }        
    }
    
    public Comparison(COMPARE_OP op) {
        this.op = op;
    }

    public boolean isTrue(String s1, String s2) {
        .........        
        return op.isTrue(s1, s2);
    }
}

ИМХО можно использовать и в чисто сишном стиле.

jek_
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.