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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> public static class с не статическими полями, Смысл? 
:(
    Опции темы
КунгФуЧайник
Дата 29.8.2015, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 10.8.2011

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



Есть public static class. У него есть не статические public поля, методы. Чтобы получить к ним доступ, нужно ведь создать экземпляр этого класса? Смысл тогда объявлять его static-ом?

Это сообщение отредактировал(а) КунгФуЧайник - 29.8.2015, 22:28
PM MAIL   Вверх
AntonSaburov
Дата 29.8.2015, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Это требуется для внутреннего класса - без static доступ к этому классу будет невозможен.
PM MAIL WWW ICQ   Вверх
Wissenstein
Дата 30.8.2015, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 7.8.2007
Где: Харків, Україна

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



Предположим, есть класс
Код

public class Foo {
    pulic static class Bar {
        public String name = "Baz";
    }
}

В этом случае такой код будет правильным:
Код

Foo.Bar fooBar = new Foo.Bar();
String fooBarName = fooBar.name;

Если сделать класс Bar нестатическим:
Код

public class Foo {
    pulic class Bar {
        public String name = "Baz";
    }
}

то предыдущий код доступа к name будет синтаксическии неправильным, и его придётся переписать так:
Код

Foo foo = new Foo();
foo.Bar fooBar = new foo.Bar();
String fooBarName = fooBar.name;


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL ICQ GTalk   Вверх
Samotnik
Дата 31.8.2015, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



КунгФуЧайник, вопрос из разряда ту би о но туби smile
Не статический вложенный класс (твой второй) имеет доступ ко всем членам класса, в которые он вложен. В случае со статическим классом, он не имеет доступа к членам и методам того класса, где он лежит.
Попробуй скомпилировать: 
Код

public class Foo {

    private int i =0; //можешь сделать статичной, поможет?

    public static class Bar {
        public String name = "Baz";
        i = 2;
    }

    public static void main(String[] args) {
        Foo.Bar fooBar = new Foo.Bar();
        String fooBarName = fooBar.name;
    }
}


PM MAIL   Вверх
jelum
Дата 12.10.2015, 13:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











@КунгФуЧайник, посмотри на патерн Builder. Он построен через использование внутреннего статичного класса для создание экземпляра внешнего класса. Это одно из применений.

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

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

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


 




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


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

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