首页 > 解决方案 > Java - 将类的实例创建为 String 作为类名

问题描述

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

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

标签: javastringclassobjectinstance

解决方案


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

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

public class Player {
    private String name;

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

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

Player player = new Player(name);

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


推荐阅读