Public static enumType valueOf(String str)
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 возвращает константу перечислимого типа, имя которой соответствует указанной  строке, иначе выбрасывает исключение

Apple ap = Apple.valueOf(“Jonathan”);

Замечания:

1) Перечислимый тип в языке Java — это класс. Несмотря на то, что вы не можете инициализировать переменную типа enum с помощью операции new, у перечислимого типа много функциональных возможностей таких же, как у других классов. К примеру, вы можете создать для него конструкторы, добавить поля и методы и даже реализовать интерфейсы.

enum Apple {

Jonathan(10), GoldenDel(9), RedDel, Winsap(15), Cortland(8);

  private int price;

  Apple(int p) {

    price = p;

  }

  Apple() {

    price = -1;

  }

  int getPrice() {

    return price;

  }

}
Когда в методе main () объявляется переменная Apple ар, вызывается конструктор для класса Apple по одному на каждую заданную константу. Обратите внимание, как конструктору передаются аргументы — они заключаются в круглые скобки и указываются после каждого имени константы, как показано в следующей строке:
Jonathan (10), GoldenDel (9), Winesap(15), Cortland(8);
Эти значения передаются в конструктор Apple () в параметре р, который затем присваивает это значение переменной price.
Конструктор вызывается отдельно для каждой константы.

2) Перечислимый тип не может наследовать другой класс (вы не можете наследовать суперкласс при объявлении типа enum ), но все перечислимые типы автоматически наследуют от класса java . lang . Enum

3) Тип enum не может быть суперклассом. Это означает, что он не может расширяться.

4) Клонировать экземпляры перечиcлимых типов нельзя, сравнивать и выполнять прочие стандартные операции - можно




Метаданные

В версию Java 2 5.0 включена новая мощная функциональная возможность, названная метаданными (metadata), с ее помощью можно внедрять дополнительную информацию в исходный код. Эта информация, именуемая аннотациями или примечаниями (annotations), не изменяет алгоритм работы программы. Таким образом, аннотации оставляют семантику программы неизменной. Но эта информация может использоваться различными программными средствами, как во время разработки, так и во время установки программы. Хотя компания Sun называет это новое средство метаданными, более информативный термин "возможность аннотирования программ" так же применяется.

• В основе механизма метаданных лежат так называемые аннотации.

• Аннотация – это «интерфейс» специфического вида, позволяющий задавать описания классов и их элементов.

• Пример аннотации:

@interface MyAnnotation {

  String str();

  int val();

}

В вышеприведенных строках приведено объявление аннотации с именем MyAnnо. Обратите внимание на то, что ключевому слову interface предшествует символ @. Такая запись сообщает компилятору об объявлении аннотации.

• Члены-методы имеют, скорее, смысл полей.

• Тела этих методов будут создаваться автоматически Java.

• Аннотациями можно снабжать классы, методы, поля, параметры, константы перечислимых типов и аннотации.

• В любом случае аннотация предшествует объявлению.

• Все аннотации наследуют интерфейс java . lang . annotation . Annotation

Когда вы применяете аннотацию, то задаете значения для ее методов-членов. Далее приведен фрагмент, в котором аннотация MyAnnotation сопровождает объявление метода:

Пример снабжения аннотацией:

@MyAnnotation(str = “Example”, val= 100)

public static void myMeth() {...}

Приведенная аннотация связана с методом myMeth(). Рассмотрим внимательно синтаксис аннотации. За именем аннотации, начинающимся с символа @, следует заключенный в круглые скобки список инициализирующих значений для методов-членов. Для того чтобы передать значение методу-члену, имени этого метода присваивается значение. Таким образом, в приведенном фрагменте строка "Annotation Example" (Пример аннотации) присваивается методу str, члену аннотации типа My Annotation. При этом в присваивании после имени str нет круглых скобок. Когда методу-члену передается инициализирующее значение, используется только имя метода. Следовательно, в данном контексте методы-члены выглядят как поля.

Дата: 2019-02-19, просмотров: 197.