-4

假设我在下面有这个课程:

    public class Player{
}

我可以像这样创建一个新实例:

Player someone = new Player();

现在我有一个 .txt 文件,每一行都是潜在的玩家:

乔治
·乔尔·
凯特
...

我可以读取这些行并将它们分配给这样的字符串:

字符串名称=“乔治”;

我怎样才能制作一个名为“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类中,我在创建实例后将这些字符串分配给它们,我可以获取和设置它们等,但这不是我想在这里操作的。我只是对您是否可以通过这种方式创建新实例感兴趣。

4

2 回答 2

1

您的变量名不应该与它所代表的实例有任何关系。您的编程应该足够抽象,这样如果您更改了该 txt 文件,就不必更改任何代码。

首先,您的 Player 类应该在构造函数中接受一个名称(有很多方法可以做到这一点,这只是最简单的)。

public class Player {
    private String name;

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

然后,当您创建玩家时,不要使用名称作为变量的名称。

Player player = new Player(name);

但是,您正在阅读 .txt,您可以为每一行创建一个播放器,或类似的东西。

于 2018-06-28T20:32:33.933 回答
1

我不喜欢像您在问题中提到的那样根据玩家名称创建变量名称的想法。如果您需要知道 Player 的名称,那么您只需访问 name 变量。但是此代码将允许您在使用构造函数创建对象时设置播放器名称字段。

 public class Player{

     Private string name;

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

}

Player player= new Player("joel");
于 2018-06-28T20:33:30.850 回答