Java - Создание экземпляра класса в виде String в качестве имени класса - PullRequest
0 голосов
/ 28 июня 2018

Допустим, у меня есть этот класс ниже:

    public class Player{
}

Я мог бы сделать новый экземпляр этого так:

Player someone = new Player();

Теперь у меня есть файл .txt с каждой строкой в ​​качестве потенциального игрока:

джордж
Joel
кейт
...

Я могу прочитать эти строки и назначить их в строку следующим образом:

String name = "george";

Как я могу сделать нового игрока с именем "джордж"? Например, я хотел бы создать «джордж» внизу.

Player name.toClassName = new Player();

Я нашел бы одно решение:

if(name == "george"){
    Player george = new Player();
}
if(name == "joel"){
    Player joel = new Player();
}
if(name == "kate"){
    Player kate = new Player();
} ...

Но это выше выглядит просто глупо. (Кстати, у меня уже есть личное имя; внутри класса Player , я присваиваю им эти строки после создания экземпляров, могу получить и установить их и т. Д., Но это не то, чем я хотел бы здесь манипулировать. Мне просто интересно, могли бы вы создать новые экземпляры таким образом.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Мне не нравится идея создания имени переменной на основе имени игрока, как вы упомянули в своем вопросе. Если вам когда-нибудь понадобится узнать имя проигрывателя, вы просто получите доступ к переменной name. Но этот код позволит вам установить поле «Имя игрока» при создании объекта с помощью конструктора.

 public class Player{

     Private string name;

     Player(String name)
      {
        this.name - name;
      }

}

Player player= new Player("joel");
0 голосов
/ 28 июня 2018

Ваше имя переменной не должно иметь ничего общего с экземпляром, который она представляет. Ваше программирование должно быть достаточно абстрактным, чтобы, если вы изменили этот текстовый файл, вам не пришлось менять какой-либо код.

Во-первых, ваш класс Player должен принять имя в конструкторе (существует множество способов сделать это, это просто самое простое).

public class Player {
    private String name;

    public Player(String inName) {
        name = inName
    }
}

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

Player player = new Player(name);

Как бы вы ни читали .txt, вы можете создать одного игрока для каждой строки или что-то в этом роде.

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