Разница между хранением ссылок и объектов? - PullRequest
0 голосов
/ 11 апреля 2020

В чем разница между

Player player1 = new Player("John");
players[0] = player1;

и

players[0] = new Player("John");

Насколько я понимаю, первый хранит ссылку, а второй - объект. Я ошибаюсь? Есть ли разница? Какой из них лучше практиковать?

Ответы [ 3 ]

0 голосов
/ 11 апреля 2020

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

Вторая часть. Новый экземпляр сохраняется непосредственно в массиве.

В коде нет ошибок.

На мой взгляд, вторая часть лучше первой части.

0 голосов
/ 11 апреля 2020

С первым вы сохраняете ссылку на player 1. Это дает вам возможность вызывать любые методы, хранящиеся в player 1, перед тем, как ссылаться на него в вашем массиве. Вторая опция просто означает, что объект находится только в вашем массиве, и поэтому вам придется вызывать метод напрямую, например player[0].run().

Что касается лучшей практики, то это просто зависит от того, что вы намерены делать с объектом. Если вам нужно изменить его до создания ссылки в массиве, используйте первый фрагмент. Если вам просто нужно создать экземпляр большого количества объектов игрока, я бы просто использовал для l oop, который создает массив игроков напрямую.

0 голосов
/ 11 апреля 2020

вы сделаете это, если позже вы захотите изменить или ссылаться на player1 в вашем коде, и если вы не хотите менять или требовать player1 в своем коде, вы можете напрямую назначить player1 с нулевыми индексами

и обоими Хорошая практика, как вы используете.

  • Сводка
    1. подход создать указатель на player1, который впоследствии может быть использован
    2. непосредственно хранить в массиве без ссылки игроку1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...