2015-02-18 5 views
1

Я создаю класс enum в java, который уже создан в .NET.Как установить тип данных класса enum?

Это код .NET.

public enum Bezel : byte 
     { 
      Flashing, 
      SolidOn, 
      None = 254 
     } 

И это код Java, который я пытаюсь.

public enum Bezel { 

     Flashing, 
     SolidOn, 
     None = 254 
    } 

В коде .NET они расширяют «байт». Итак, как мы можем сделать то же самое в Java?

ответ

1

Перечисления в Java и .NET являются очень другой. В .NET они просто называются номерами, в основном. В Java они представляют собой фиксированный набор объектов, которые вы можете придать дополнительный характер и т. Д.

Кроме того, код C# не является «расширением» byte - он просто использует byte в качестве базового типа. Ближайшим эквивалентом кода Java будет что-то вроде:

public enum Bezel { 
    // Note different naming convention in Java 
    FLASHING((byte) 0), 
    SOLID_ON((byte) 1), 
    NONE((byte) 254); 

    private final byte value; 

    private Bezel(byte value) { 
     this.value = value; 
    } 

    public byte getValue() { 
     return value; 
    } 
} 

Обратите внимание, что если вы печатаете из Bezel.NONE.getValue(), он будет печатать -2, потому что в Java byte типа подписан в то время как это беззнаковое в C#. В Java нет беззнакового байтового типа, но вы всегда можете использовать short или int, чтобы покрыть диапазон 0-255 (и многое другое, конечно).

также хочу получить метод для извлечения Bezel с учетом его значения - что-то, что вы могли бы сделать на C# только путем литья. Однако мы не знаем, как вы собираетесь использовать перечисление.

2

Перечисления в java - это множества объектов, а не множества констант, как они есть на C#. Таким образом, вы должны написать перечисление в Java, как это:

public enum Bezel 
(
    Flashing(0), 
    SolidOn(1), 
    None(254); 

    public final int value; 
    public Bezel(int value) 
    { 
     this.value = value; 
    } 
) 

Затем, когда вам нужно реальное значение, сделать это:

Bezel b = ...; 
int value = b.value; 
Смежные вопросы