Создание объекта в параметрах метода

189
18 мая 2018, 02:30

Никак не могу разобраться в чем отличие. Вот исходный код:

public static void main(String[] args) {
    JFrame frame = new JFrame("My First GUI");
    JButton button = new JButton("hi");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds( 200, 200, 800, 400);
    frame.setLayout(new BorderLayout());
    frame.add(new JButton("go!"), BorderLayout.WEST);
    frame.setVisible(true);
}

new в строчке frame.add(new JButton("go!"), BorderLayout.WEST); создаёт новый объект класса JButton, но только без ссылки? Или это что-то другое значит?
И в чем будет отличие, если заранее объявить кнопку JButton button = new JButton("hi"); и непосредственно в параметре для add использовать button?

Answer 1

Когда вы объявляете:

JButton goButton = new JButton("go!");

вместо прямой передачи нового объекта:

frame.add(new JButton("go!"), BorderLayout.WEST);

У вас имеется 2 преимущества:

  1. Изменение свойств кнопки по переменной, даже после её добавления

    frame.add(goButton, BorderLayout.WEST);

    goButton.setText("GO GO GO!");

  2. Документирование кодом, т.е. создав переменную и дав ей логичное имя, другой программист, который будет читать ваш код, скорее всего быстрее поймёт, вашу задумку, не прибегая к помощи комментариев и/или документации.

Однако в некоторых случаях допустимо создавать объект без создания переменной, когда это само собой очевидно, это уменьшит размер кода.

READ ALSO
Программа не видит validation.properties

Программа не видит validation.properties

Вместо того что бы выводилось значение свойства, выводится просто текст, который я вписываюЯ пытался обойти эту проблему, вписывая значение...

305
Проверка массива на возврастание

Проверка массива на возврастание

Понятно как узнать, что массив строго возврастающий или убывающий:

212
Реализация подсказки для пользователя

Реализация подсказки для пользователя

Делаю приложение с математическими и логическими квестамиНа каждом уровне у пользователя будет возможность использовать подсказку, то есть...

231