Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / static class / 9 сообщений из 9, страница 1 из 1
15.11.2006, 17:27
    #34131138
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
Статические иннеры
Не могу представить для чего их можно использовать :0
...
Рейтинг: 0 / 0
15.11.2006, 17:29
    #34131150
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
LINUXERСтатические иннеры
Не могу представить для чего их можно использовать :0
Для всего :)
...
Рейтинг: 0 / 0
16.11.2006, 07:56
    #34132029
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
Наверно я неправильно понял их отличие от просто вложенных, вернее не нашёл существенных отличий
...
Рейтинг: 0 / 0
16.11.2006, 12:07
    #34132706
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
LINUXERНаверно я неправильно понял их отличие от просто вложенных, вернее не нашёл существенных отличий
Чаще всего статические внутренние классы используют в качестве неких членов внешнего класса-"библиотеки" или для хранения внутренних данных и передачи их из одного инстанса внешнего класса в другой, не раскрывая деталей реализации хранения... Типа объявили приватный статический класс InnerDataSegment, при поступлении данных пишем их в инстансы данного класса и добавляем в лист, который потом можем передать другому инстансу внешнего класса - например, потомку, имеющему некие специфические методы вывода данных на печать. Что-то вроде этого.
...
Рейтинг: 0 / 0
16.11.2006, 12:10
    #34132725
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
ЗашедшийТипа объявили приватный статический класс...
Для использования в потомках, конечно, протектедный... Приватный - если между инстансами одного класса передавать данные надо. Тогда присвоение данных можно сделать как-то так:
Код: plaintext
1.
2.
3.
4.
5.
 public   static  MyOuterClass createCopy(MyOuterClass myOuter) {
    MyOuterClass myOuter2 =  new  MyOuterClass();
    myOuter2.assignData(myOuter);
     return  myOuter2;
}
...
Рейтинг: 0 / 0
16.11.2006, 12:32
    #34132858
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
спасибо
...
Рейтинг: 0 / 0
16.11.2006, 12:46
    #34132947
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
LINUXERНаверно я неправильно понял их отличие от просто вложенных, вернее не нашёл существенных отличий
static inner class имеет все возможности обычного класса. Я тоже не знаю, зачем их использовать. Отличие от просто вложенного - он не видит свойств объектов (то есть имеет доступ только к статическим членам класса, внутри которого объявлен).
Похоже, Зашедший в чем-то прав.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
05.11.2018, 17:52
    #39728178
serega_dgl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
Java имеет статические вложенные классы, но похоже, что вы ищете статический класс верхнего уровня. Java не имеет способа сделать класс верхнего уровня статическим, но вы можете имитировать статический класс следующим образом:

Объявить свой класс final - Предотвращает расширение класса, поскольку расширение статического класса не имеет смысла
Сделать конструктор private - предотвращает создание экземпляра по клиентскому коду, поскольку нет смысла создавать статический класс
Создайте все элементы и функции класса static. Поскольку класс не может быть инстанцирован, методы экземпляров не могут быть вызваны или доступны поля экземпляра
Обратите внимание, что компилятор не помешает вам объявить экземпляр (нестатический). Проблема будет появляться только в том случае, если вы попытаетесь вызвать член экземпляра

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public class TestMyStaticClass {
     public static void main(String []args){
        MyStaticClass.setMyStaticMember(5);
        System.out.println("Static value: " + MyStaticClass.getMyStaticMember());
        System.out.println("Value squared: " + MyStaticClass.squareMyStaticMember());
        // MyStaticClass x = new MyStaticClass(); // results in compile time error
     }
}

// A top-level Java class mimicking static class behavior
public final class MyStaticClass {
    private MyStaticClass () { // private constructor
        myStaticMember = 1;
    }
    private static int myStaticMember;
    public static void setMyStaticMember(int val) {
        myStaticMember = val;
    }
    public static int getMyStaticMember() {
        return myStaticMember;
    }
    public static int squareMyStaticMember() {
        return myStaticMember * myStaticMember;
    }
}
...
Рейтинг: 0 / 0
06.11.2018, 07:20
    #39728317
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static class
serega_dglJava не имеет способа сделать класс верхнего уровня статическим, но вы можете имитировать статический класс следующим образом:

Бред какой.
"Обычный" вложенный клас фактически имеет дополнительное поле- ссылка на родительский.
"Статический" такого украшения лишён и обратиться к полям родительского класса нельзя. Зато и память через него не утечёт.
То, что Вы описали- это синглтон.

PS: да, авторы java накуралесили с использованием некоторых ключевых слов.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / static class / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]