Size: a a a

2020 July 20

AF

Alex F in learn.java
Из книги OCA Boyarsky and Selikoff:
1. If there is a superclass, initialize it first.
2. Static variable declarations and static initializers in the order they appear in the file.
3. Instance variable declarations and instance initializers in the order they appear in the file.
4. The constructor.
Ок. делаю файл, в нем
 C ext B
B ext A
A
new C()
Порядок вызова:
static{} A
static{} B
static{} C
{} A
A()
{} B
B()
{} C
C()
Получается, что на самом деле
2. Static variable declarations and static initializers in the order they appear in the class.
Так?
источник

A

Anton in learn.java
Alex F
Из книги OCA Boyarsky and Selikoff:
1. If there is a superclass, initialize it first.
2. Static variable declarations and static initializers in the order they appear in the file.
3. Instance variable declarations and instance initializers in the order they appear in the file.
4. The constructor.
Ок. делаю файл, в нем
 C ext B
B ext A
A
new C()
Порядок вызова:
static{} A
static{} B
static{} C
{} A
A()
{} B
B()
{} C
C()
Получается, что на самом деле
2. Static variable declarations and static initializers in the order they appear in the class.
Так?
Скинь полный код на http://ideone.com/ или. https://pastebin.com/ если есть конкретный вопрос по коду.

В общем случае инициализация классов аботает по JLS §12.4 - там есть хорошие примеры кода, разъясняющие нюансы.
Книги по OCA больше для повторения/закрепления, полную картину проще получить по JLS.
источник

AF

Alex F in learn.java
Anton
Скинь полный код на http://ideone.com/ или. https://pastebin.com/ если есть конкретный вопрос по коду.

В общем случае инициализация классов аботает по JLS §12.4 - там есть хорошие примеры кода, разъясняющие нюансы.
Книги по OCA больше для повторения/закрепления, полную картину проще получить по JLS.
Спасибо, вот код: https://pastebin.com/ZWfkQEfx
Да, именно этот раздел сейчас и изучаю, потому что есть другая хитрая задача: https://pastebin.com/TEcwDpX6
и тут мой мозг вообще не понимает что происходит...
источник

A

Anton in learn.java
Alex F
Спасибо, вот код: https://pastebin.com/ZWfkQEfx
Да, именно этот раздел сейчас и изучаю, потому что есть другая хитрая задача: https://pastebin.com/TEcwDpX6
и тут мой мозг вообще не понимает что происходит...
Если мозг не хочет формулировать вопрос, что конкретно непонятно, надо ему как-то помочь. Например попробовав для себя по шагам прописать что понятно и где возникает паника. И JLS может тоже помочь там как раз шаги расписаны однозначно.
источник

AF

Alex F in learn.java
Anton
Если мозг не хочет формулировать вопрос, что конкретно непонятно, надо ему как-то помочь. Например попробовав для себя по шагам прописать что понятно и где возникает паника. И JLS может тоже помочь там как раз шаги расписаны однозначно.
Конкретно не понимаю пока что почему str не инициализировалась )
Сейчас на подходе уже раздел об этом, надеюсь после прочтения пойму.
источник

A

Anton in learn.java
Alex F
Конкретно не понимаю пока что почему str не инициализировалась )
Сейчас на подходе уже раздел об этом, надеюсь после прочтения пойму.
Код нарушает лучшую практику Java при создании конструктора.
Конструкторы не должны вызвать переопределяемые методы - то есть, они должны вызывать только методы , которые являются private, static или final.

Добавил вывод, чтобы было понятней:
https://pastebin.com/4EEtfePu

Суть в том, что конструктор A вызывает метод объекта B в тот момент, когда поля объекта B еще не инициализированы.
Пример 12.5-2 JLS является хорошей демонстрацией этой проблемы.
источник

AF

Alex F in learn.java
Anton
Код нарушает лучшую практику Java при создании конструктора.
Конструкторы не должны вызвать переопределяемые методы - то есть, они должны вызывать только методы , которые являются private, static или final.

Добавил вывод, чтобы было понятней:
https://pastebin.com/4EEtfePu

Суть в том, что конструктор A вызывает метод объекта B в тот момент, когда поля объекта B еще не инициализированы.
Пример 12.5-2 JLS является хорошей демонстрацией этой проблемы.
Премного благодарен, изучу :)
источник
2020 July 21

M

Mikhail in learn.java
Quantum Harmonizer
создать файл да вписать в него стрим
Здравствуйте. Вчера спрашивал, но решил подробнее описать.  Задача у меня выловить из response файл сгенерированного отчета в pdf. Сохранить во временной папке. Наложить водяной знак времени генерации. И дальше отдать пользователю.  Можно ли вообще подменить response в Filter? Мне выходит ошибка "Cannot call reset() after response has been committed". Суть понимаю, что нельзя в текущей моей реализации. Но есть ли иной способ сделать такие манипуляции с response. ?
источник

QH

Quantum Harmonizer in learn.java
Mikhail
Здравствуйте. Вчера спрашивал, но решил подробнее описать.  Задача у меня выловить из response файл сгенерированного отчета в pdf. Сохранить во временной папке. Наложить водяной знак времени генерации. И дальше отдать пользователю.  Можно ли вообще подменить response в Filter? Мне выходит ошибка "Cannot call reset() after response has been committed". Суть понимаю, что нельзя в текущей моей реализации. Но есть ли иной способ сделать такие манипуляции с response. ?
Не знаю, про фильтр не в курсе совсем.
источник

К

Космас in learn.java
String[] icons = {"1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "*", "C", "0", "=", "."};

       for (int x = 0; x < 4; x++) {
           for (int y = 0; y < 4; y++) {
               numbers[x * 4 + y + 1] = new JButton(icons[x * 4 + y]);
               numbers[x * 4 + y + 1].setBounds(x * (65 + 1) + 1, y * (55 + 1) + 70, 65, 55);
               numbers[x * 4 + y + 1].setFont(font);
               add(numbers[x * 4 + y + 1]);
           }
       }                    
                                                                        Делаю калькулятор выбивает ошибку:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10

кто знает как исправить помогите пожалуйста
источник

N🌌

Nazarii 🌌 in learn.java
Космас
String[] icons = {"1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "*", "C", "0", "=", "."};

       for (int x = 0; x < 4; x++) {
           for (int y = 0; y < 4; y++) {
               numbers[x * 4 + y + 1] = new JButton(icons[x * 4 + y]);
               numbers[x * 4 + y + 1].setBounds(x * (65 + 1) + 1, y * (55 + 1) + 70, 65, 55);
               numbers[x * 4 + y + 1].setFont(font);
               add(numbers[x * 4 + y + 1]);
           }
       }                    
                                                                        Делаю калькулятор выбивает ошибку:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10

кто знает как исправить помогите пожалуйста
у тебя массив numbers скорее всего имеет размер 10, а ты пытаешься в него впихнуть что-то вплоть до 21 индекса
источник

К

Космас in learn.java
Nazarii 🌌
у тебя массив numbers скорее всего имеет размер 10, а ты пытаешься в него впихнуть что-то вплоть до 21 индекса
Спасибо, заработало)
источник

N🌌

Nazarii 🌌 in learn.java
Космас
Спасибо, заработало)
ерунда
У тебя просто в ошибке прямо так и сказано
источник

OP

Oleg Pavl in learn.java
Mikhail
Здравствуйте. Вчера спрашивал, но решил подробнее описать.  Задача у меня выловить из response файл сгенерированного отчета в pdf. Сохранить во временной папке. Наложить водяной знак времени генерации. И дальше отдать пользователю.  Можно ли вообще подменить response в Filter? Мне выходит ошибка "Cannot call reset() after response has been committed". Суть понимаю, что нельзя в текущей моей реализации. Но есть ли иной способ сделать такие манипуляции с response. ?
Вот нашел что то похожее. Интересная тема. Отпишись, как смог победить проблему. https://stackoverflow.com/questions/39963084/unable-to-intercept-and-manipulate-httpservletresponse-in-spring-boot
источник

GV

Gukov Viktor in learn.java
Alex F
Спасибо, вот код: https://pastebin.com/ZWfkQEfx
Да, именно этот раздел сейчас и изучаю, потому что есть другая хитрая задача: https://pastebin.com/TEcwDpX6
и тут мой мозг вообще не понимает что происходит...
Потому что идет вызов this.print(), где this является экземпляром B
источник

GV

Gukov Viktor in learn.java
У тебя при инициализации родительских классов, this всегда равен классу который мы указали после new
источник

GV

Gukov Viktor in learn.java
А  Override указывает, что метод переопределен, следовательно происходит позднее связывание метода
источник

К

Космас in learn.java
Что делать при ошибке NullPointException?


String[] icons = {"1", "4", "7", "C", "2", "5", "8", "0", "3", "6", "9", "=", "+", "-", "*", "/"};

       for (int x = 0; x < 4; x++) {
           for (int y = 0; y < 4; y++) {
               numbers[x * 4 + y + 1] = new JButton(icons[x * 4 + y]);
               numbers[x * 4 + y + 1].setBounds(x * (65 + 1) + 1, y * (55 + 1) + 70, 65, 55);
               numbers[x * 4 + y + 1].setFont(font);
               add(numbers[x * 4 + y + 1]);
           }
       }

       input.setBounds(5, 10, 255, 50);
       input.setEditable(false);
       add(input);

       ActionListener l = (ActionEvent e ) -> {
           JButton b = (JButton)e.getSource();
           input.setText(input.getText() + b.getText());
       };

       for (JButton b : numbers) {
           b.addActionListener(l);
       }

   }
источник

N🌌

Nazarii 🌌 in learn.java
Космас
Что делать при ошибке NullPointException?


String[] icons = {"1", "4", "7", "C", "2", "5", "8", "0", "3", "6", "9", "=", "+", "-", "*", "/"};

       for (int x = 0; x < 4; x++) {
           for (int y = 0; y < 4; y++) {
               numbers[x * 4 + y + 1] = new JButton(icons[x * 4 + y]);
               numbers[x * 4 + y + 1].setBounds(x * (65 + 1) + 1, y * (55 + 1) + 70, 65, 55);
               numbers[x * 4 + y + 1].setFont(font);
               add(numbers[x * 4 + y + 1]);
           }
       }

       input.setBounds(5, 10, 255, 50);
       input.setEditable(false);
       add(input);

       ActionListener l = (ActionEvent e ) -> {
           JButton b = (JButton)e.getSource();
           input.setText(input.getText() + b.getText());
       };

       for (JButton b : numbers) {
           b.addActionListener(l);
       }

   }
В какой строке?
Скорее всего, ты не создал объект, а лишь его объявил (кнопку к примеру)
источник

К

Космас in learn.java
Nazarii 🌌
В какой строке?
Скорее всего, ты не создал объект, а лишь его объявил (кнопку к примеру)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 at sample.MyPanel.<init>(MyPanel.java:51)
источник