powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / static class
9 сообщений из 9, страница 1 из 1
static class
    #34131138
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статические иннеры
Не могу представить для чего их можно использовать :0
...
Рейтинг: 0 / 0
static class
    #34131150
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERСтатические иннеры
Не могу представить для чего их можно использовать :0
Для всего :)
...
Рейтинг: 0 / 0
static class
    #34132029
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверно я неправильно понял их отличие от просто вложенных, вернее не нашёл существенных отличий
...
Рейтинг: 0 / 0
static class
    #34132706
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERНаверно я неправильно понял их отличие от просто вложенных, вернее не нашёл существенных отличий
Чаще всего статические внутренние классы используют в качестве неких членов внешнего класса-"библиотеки" или для хранения внутренних данных и передачи их из одного инстанса внешнего класса в другой, не раскрывая деталей реализации хранения... Типа объявили приватный статический класс InnerDataSegment, при поступлении данных пишем их в инстансы данного класса и добавляем в лист, который потом можем передать другому инстансу внешнего класса - например, потомку, имеющему некие специфические методы вывода данных на печать. Что-то вроде этого.
...
Рейтинг: 0 / 0
static class
    #34132725
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗашедшийТипа объявили приватный статический класс...
Для использования в потомках, конечно, протектедный... Приватный - если между инстансами одного класса передавать данные надо. Тогда присвоение данных можно сделать как-то так:
Код: plaintext
1.
2.
3.
4.
5.
 public   static  MyOuterClass createCopy(MyOuterClass myOuter) {
    MyOuterClass myOuter2 =  new  MyOuterClass();
    myOuter2.assignData(myOuter);
     return  myOuter2;
}
...
Рейтинг: 0 / 0
static class
    #34132858
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
static class
    #34132947
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERНаверно я неправильно понял их отличие от просто вложенных, вернее не нашёл существенных отличий
static inner class имеет все возможности обычного класса. Я тоже не знаю, зачем их использовать. Отличие от просто вложенного - он не видит свойств объектов (то есть имеет доступ только к статическим членам класса, внутри которого объявлен).
Похоже, Зашедший в чем-то прав.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
static class
    #39728178
serega_dgl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
static class
    #39728317
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serega_dglJava не имеет способа сделать класс верхнего уровня статическим, но вы можете имитировать статический класс следующим образом:

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

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


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