Типы перечислений по своей сути статичны в java? [Дубликат]

Пробовал это в консоли, и он работает.

var aFileParts = ['<a id="a"><b id="b">hey!</b></a>'];
var oMyBlob = new Blob(aFileParts, {type : 'text/html'}); // the blob
window.open(URL.createObjectURL(oMyBlob));
48
задан Steven Roose 13 February 2013 в 18:20
поделиться

3 ответа

enum типы, которые определены как вложенные типы, всегда неявно static (см. JLS §8.9. Перечисления )

Вы не можете иметь статический вложенный тип внутри нестатического (например, «внутренний класс», см. JLS §8.1.3. Внутренние классы и экземпляры Enclosing ).

Поэтому вы не можете иметь enum внутри нестатического вложенного типа.

80
ответ дан Joachim Sauer 27 August 2018 в 02:01
поделиться

Уже достаточно информации из + Joachim Sauer, я просто добавляю дополнительные данные.

Вы можете определить внутреннее перечисление только в том случае, если ваш внутренний класс является статическим вложенным внутренним классом. См. Ниже

private static class DbResource {

    public enum DB {
        MERGE_FROM, MERGE_TO, MAIN;
    }
}
2
ответ дан Dhiral Pandya 27 August 2018 в 02:01
поделиться

Если вы объявили enum следующим образом:

enum Suit {SPADES, HEARTS, CLUBS, DIAMONDS}

Компилятор Java синтетически сгенерировал для вас следующий класс:

final class Suit extends java.lang.Enum<Suit> {
  public static final Suit SPADES;
  public static final Suit HEARTS;
  public static final Suit CLUBS;
  public static final Suit DIAMONDS;
  private static final Suit[] $VALUES;
  public static Suit[] values();
  public static Suit valueOf(java.lang.String);
  private Suit();
}

Нет намерения создавать другие экземпляры этого класса, отличные от тех статических полей, которые уже определены в нем (как вы могли бы сделать вывод из его частного конструктора), но, что наиболее важно, и, как упоминалось в принятом ответе, внутренний класс не может иметь статические члены ( JLS §8.1 .3. Внутренние классы и экземпляры Enclosing Instances ), и поскольку класс синтетического enum делает это, он делает его неприемлемым как внутренний класс.

6
ответ дан Edwin Dalorzo 27 August 2018 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: