Перечисление с международным значением в Java

SELECT  *
FROM    table1
WHERE   CONVERT(varchar(10),columnDatetime,121) = 
        CONVERT(varchar(10),CONVERT('14 AUG 2008' ,smalldatetime),121)

Это преобразует дату и время и строку в varchars формата "YYYY-MM-DD".

Это очень ужасно, но должно работать

51
задан ripper234 5 November 2009 в 06:52
поделиться

4 ответа

Если вам нужны атрибуты для вашего перечисления , вам нужно определить его следующим образом:

public enum Foo {
    BAR (0),
    BAZ (1),
    FII (10);

    private final int index;   

    Foo(int index) {
        this.index = index;
    }

    public int index() { 
        return index; 
    }

}

Вы бы использовали его так:

public static void main(String[] args) {
    for (Foo f : Foo.values()) {
       System.out.printf("%s has index %d%n", f, f.index());
    }
}

Необходимо понять следующее: это перечисление - это просто ярлык для создания класса, поэтому вы можете добавлять в класс любые атрибуты и методы, которые хотите.

Если вы не хотите определять какие-либо методы в своем перечислении вы можете изменить область действия переменных-членов и сделать их общедоступными , но это не то, что они делают в примере на веб-сайте Sun .

81
ответ дан 7 November 2019 в 10:05
поделиться

Это:

enum Foo
{
  Bar(0),
  Baz(1),
  Fii(10);

  private int index;

  private Foo(int index) {
      this.index = index;
  }
}

Обратите внимание, что получить значение перечисления из индекса, Foo.valueOf (1) (*), не сработает. Вам нужно написать код самостоятельно:

public Foo getFooFromIndex(int index) {
    switch (index) {
    case 0:
        return Foo.Bar;
    case 1:
        return Foo.Baz;
    case 10:
        return Foo.Fii;

    default:
        throw new RuntimeException("Unknown index:" + index);
    }
}

(*): Enum.valueOf () вернуть перечисление из String. Таким образом, вы можете получить значение Bar с помощью Foo.valueOf ('Bar')

4
ответ дан 7 November 2019 в 10:05
поделиться

Похоже, вам нужно что-то вроде этого:

public enum Foo {
    Bar(0),
    Baz(1),
    Fii(10);

    private int number;

    public Foo(int number) {
       this.number = number;
    }

    public int getNumber() {
        return number;
    }
}

Для начала, Sun Java Enum Tutorial будет отличным местом, чтобы узнать больше.

2
ответ дан 7 November 2019 в 10:05
поделиться
public enum Foo {
    Bar(0),
    Baz(1),
    Fii(10);

    private final int someint;
    Foo(int someint) {
        this.someint = someint;
    }
}

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

0
ответ дан 7 November 2019 в 10:05
поделиться