Static/Instance

183
16 августа 2018, 15:40

Встретил в книге данный пример. Никак не могу понять, почему метод third() дает ошибку? В книге написанно, ошибка возникает из-за того, что "не статическому методу присваивается статическая ссылка" Но ведь переменная name не является статической. Или я что-то не правильно понял? Заранее спасибо!

public class Static {
 private String name = "Static class";
 public static void first() { }
 public static void second() { }
 public void third() { System.out.println(name); }
 public static void main(String args[]) {
 first();
 second();
 third(); // DOES NOT COMPILE
 } }
Answer 1

Потому что для вызова нестатического метода необходим объект (instance).

Дело не в том, что внутри third используется поле name, а в том, что этот метод вызывается напрямую из другого статического метода.

new Static().third();
Answer 2

Нельзя использовать нестатические переменные и методы в статических методах, без создания объекта.

READ ALSO
Отступы с помощью margin

Отступы с помощью margin

Подскажите, как в javaFX установить размер текстового поля с помощью css? Можно ли чтобы размер открываемой картинки как то зависел от размеров...

158
Как перевернуть popup в menu на 180 градусов

Как перевернуть popup в menu на 180 градусов

У меня имеется popup menu, оно всплывает при нажатии на кнопку, по умолчанию popup menu ориентировано вертикально, а мне нужно перевернуть его на 180 градусов,...

142
Выделение области вершин мышью GraphStream

Выделение области вершин мышью GraphStream

Есть JFrame внутри которого расположен JButton и SingleGraphНа viewer'e графа стоит AutoLayout

156
Mssql и Postgresql jdbc drivers внутри одного jar файла

Mssql и Postgresql jdbc drivers внутри одного jar файла

Мне в моем приложении надо уметь общаться и с postgresql и c mssqlВ начале приложение обращается k postgre, потом уже к mssql

172