Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> что делает valueOf(String) из enum-а? 
V
    Опции темы
Dims
Дата 2.4.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 4
Всего: 11



В любом enum-е есть такие методы, как values() и valueOf(). Где посмотреть по ним справку? F1 отсылает к javadoc-у по конкретному классу. В частности, что делает valueOf()? Что является строковым представлением элемента enum-а? Его имя в Java или его представление по методу toString()?
PM MAIL   Вверх
SoulKeeper
Дата 2.4.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Код

public class Demo {

    public Demo() {
        MyEnum e = MyEnum.valueOf("enum1");

        System.out.println(e.toString());

        for(MyEnum e2 : MyEnum.values()){
            System.out.println(e2);
        }
    }

    public static void main(String[] args) {
        new Demo();
    }

    private enum MyEnum {

        enum1,
        enum2,
        enum3
    }
}


http://java.sun.com/javase/6/docs/api/java/lang/Enum.html
PM MAIL   Вверх
Dims
Дата 2.4.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 4
Всего: 11



Но по приведённой Вами ссылке нет описания, например, метода values(). valueOf тоже не совсем такой прототип имеет.
PM MAIL   Вверх
COVD
Дата 2.4.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Станет понятнее, если вспомнить, что элементом enum может быть не только строка, но и более сложный обьект. Это иллюстрировано примером в http://java.sun.com/docs/books/tutorial/ja...avaOO/enum.html . 

Метод values() возвращает коллекцию обьектов  (в примере - Planet[]) . Эти обьекты могут иметь геттеры и сеттеры, т.е. туда можно положить или извлечь данные уже после обьявления enum.

Метод valueOf("..имя..") вернет один обьект, т.е. можно например получить параметр обьекта: double mass = Planet.valueOf("MERCURY").mass; 

valueOf() - это как get() в HashMap. 


Код

public enum Planet {
    MERCURY (3.303e+23, 2.4397e6),
    VENUS   (4.869e+24, 6.0518e6),
    EARTH   (5.976e+24, 6.37814e6),
    MARS    (6.421e+23, 3.3972e6),
    JUPITER (1.9e+27,   7.1492e7),
    SATURN  (5.688e+26, 6.0268e7),
    URANUS  (8.686e+25, 2.5559e7),
    NEPTUNE (1.024e+26, 2.4746e7);

    private final double mass;   // in kilograms
    private final double radius; // in meters
    Planet(double mass, double radius) {
        this.mass = mass;
        this.radius = radius;
    }
    private double mass()   { return mass; }
    private double radius() { return radius; }

    // universal gravitational constant  (m3 kg-1 s-2)
    public static final double G = 6.67300E-11;

    double surfaceGravity() {
        return G * mass / (radius * radius);
    }
    double surfaceWeight(double otherMass) {
        return otherMass * surfaceGravity();
    }
    public static void main(String[] args) {
        double earthWeight = Double.parseDouble(args[0]);
        double mass = earthWeight/EARTH.surfaceGravity();
        for (Planet p : Planet.values())
           System.out.printf("Your weight on %s is %f%n",
                             p, p.surfaceWeight(mass));
    }
}


Это сообщение отредактировал(а) COVD - 2.4.2008, 19:28
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0710 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.