【问题标题】:java String to an objectjava字符串到对象
【发布时间】:2015-05-04 16:34:18
【问题描述】:

我想将String 转换为对象。我寻找相关主题,但找不到答案。我的代码是:

amountShip = 5;
String name = ReadConsole.nextString(); //-->variabe of the object "Player"
gamers[i] = Player.String2Object(name, 0);

Player String2Object(String name, int amountShip) {
   Object o = name;
   Player temp = (Player)o;
   temp = new Player(name, amountShip);
   return temp;             
}

class Player {
    Player (String name, int amountShip) {
        name = name;
        ships = amountShip;
    }
    Player pl = new Player(String name, int amountShip);
}

它说

java.lang.String 不能转换为 Gameobjects.Player

我的意图是动态创建 2 个具有不同实例名称的播放器对象。例如,如果有人输入“3”,我想创建

Player p1 = new Player(x,y);
Player p2 = new Player(x,y);
Player p3 = new Player(x,y);

提前非常感谢

【问题讨论】:

  • Object o = name;Player temp = (Player)o; 你觉得这有什么作用?如果你回答了,那么你的问题就解决了。
  • Java 很棒,但它不会变魔术!不过,您确实应该修复格式并提供更多信息(请参阅stackoverflow.com/questions/3988788/…

标签: java string object


【解决方案1】:

我猜你想要的只是让它变成这样?

Player String2Object(String name, int amountShip) {
    return new Player(name, amountShip);
}

或者干脆

gamers[i] = new Player(name, 0);

而不是

gamers[i] = Player.String2Object(name, 0);

另一种方法是从控制台(或文件)读取行并提取 nameamountShipString.split 函数例如。

编辑:

您不能像在您的问题中那样动态创建实例。但是你可以像这样创建数组Player[]

// n is some int entered by user.
Player[] players = new Player[n];
for(int i = 0; i < n; ++i) {
    players[i] = new Player(x, y);
}

然后像这样得到第 i 个玩家(假设 Player 类有 getName 方法)

players[i].getName();

【讨论】:

    【解决方案2】:

    String 无法通过强制转换转换为“Spieler”。相反,您可以使用Serialization,或者创建一个方法来从给定的输入中解析对象的属性。

    【讨论】:

      【解决方案3】:

      您不需要将String 转换为对象,因为String 默认为对象,因此不需要强制转换。您可以执行以下操作:

      Player String2Object(String name, int amountShip) {
          Player temp = new Player(name, amountShip);
          return temp;             
      }
      

      如果您问自己为什么您的代码无法正常工作,那是因为您试图将 String 转换为 Player。您的对象o 指向String,因此当您尝试执行(Player)o 时,您是在尝试将字符串转换为Player,并且它们之间没有任何关系。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多