Java-将类的实例创建为String作为类名

时间:2018-06-28 20:17:51

标签: java string class object instance

比方说我下面有这个课:

    public class Player{
}

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

Player someone = new Player();

现在我有一个.txt文件,每行都可以作为潜在播放器:

乔治
乔尔
凯特
...

我可以读取这些行并将其分配给这样的String:

字符串名称=“乔治”;

我该如何命名为“乔治”?例如,我想在下面创建“乔治”。

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 :(得分:1)

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

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

public class Player {
    private String name;

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

然后,在创建播放器时,请勿将名称用作变量的名称。

Player player = new Player(name);

无论您如何阅读.txt,您都可以为每一行创建一个Player或类似的内容。

答案 1 :(得分:1)

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

 public class Player{

     Private string name;

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

}

Player player= new Player("joel");