Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重写toString方法_Java_Tostring - Fatal编程技术网

Java 重写toString方法

Java 重写toString方法,java,tostring,Java,Tostring,我使用.toString返回对象的字符串表示形式,即 jcb.engineMove(move.toString()); 将产生e2e4 我试图做的是将这个对象(e2e4)的文本提取为字符串。在谷歌搜索之后,我发现覆盖了toString方法,因此我提出了以下建议: @Override public String toString() { String s = ""; int newRank = getRank(); int newFile = getFile();

我使用.toString返回对象的字符串表示形式,即

jcb.engineMove(move.toString());
将产生e2e4

我试图做的是将这个对象(e2e4)的文本提取为字符串。在谷歌搜索之后,我发现覆盖了toString方法,因此我提出了以下建议:

@Override
public String toString() {
    String s = "";
    int newRank = getRank();
    int newFile = getFile();
    final Move move = new Move(rank, file, newRank, newFile);
    s+="" + move;
    return s;
}
我的问题相当基本:

  • 这是正确的方法吗
  • 在尝试获取对象的文本时,如何调用此例程
  • Object#toString
    的使用应限于调试。

    Object#toString的使用应限于调试

  • 覆盖toString()方法是实现对象的自定义文本表示的常见且正确的方法。您可以在文献和文档中找到此过程

  • 在Java中(与C#等其他语言一样),对象类型中定义了
    toString()
    方法,这意味着Java中的每个对象都有此方法。如果您的自定义对象(从类继承而来)覆盖了
    toString()
    方法,那么您的基类将提供此方法的一个新实现,该方法将隐藏/省略超类中的
    toString()
    方法

  • 这意味着,当您在自定义类a中定义自定义的
    toString()
    方法时,调用该类型的实例(假设它是a)
    a。toString()
    将导致调用您的实现

  • 覆盖toString()方法是实现对象的自定义文本表示的常见且正确的方法。您可以在文献和文档中找到此过程

  • 在Java中(与C#等其他语言一样),对象类型中定义了
    toString()
    方法,这意味着Java中的每个对象都有此方法。如果您的自定义对象(从类继承而来)覆盖了
    toString()
    方法,那么您的基类将提供此方法的一个新实现,该方法将隐藏/省略超类中的
    toString()
    方法


  • 这意味着,当您在自定义类a中定义自定义的
    toString()
    方法时,调用该类型的实例(假设它是a)
    a.toString()
    将导致调用您的实现。

    重写
    对象。toString
    是一种很好的方法

    但是,您当前的实现犯了一个重大错误,创建了一个新的
    Move
    对象(见下文)

    要调用例程(修复后),请完全按照您已经在做的操作:

    jcb.engineMove(move.toString())

    如果
    toString()
    应该只用于调试(正如mre所说),那么您可以实现另一个名为
    getText
    的方法,该方法也可以执行相同的操作

    重要提示:

    不应在其
    toString
    方法中创建新的
    Move
    对象

    这是一个非常糟糕的主意(正如其他人提到的)


    您的
    toString
    方法应该只构建一个字符串并返回它。

    重写
    对象。toString
    是一种很好的方法

    但是,您当前的实现犯了一个重大错误,创建了一个新的
    Move
    对象(见下文)

    要调用例程(修复后),请完全按照您已经在做的操作:

    jcb.engineMove(move.toString())

    如果
    toString()
    应该只用于调试(正如mre所说),那么您可以实现另一个名为
    getText
    的方法,该方法也可以执行相同的操作

    重要提示:

    不应在其
    toString
    方法中创建新的
    Move
    对象

    这是一个非常糟糕的主意(正如其他人提到的)

    您的
    toString
    方法应该只构建一个字符串并返回它

  • 在这种情况下,我可能不会使用toString(),因为看起来您只是在重复Move类中的逻辑。为了添加任何其他细节,我有一个问题:您将这个toString()方法添加到哪个类

  • 您可以像调用其他方法一样调用此方法。首先,您需要一个对象的实例来调用它:

    someObj.toString()

  • 为了提供更多的细节,我需要回答上一个问题

  • 在这种情况下,我可能不会使用toString(),因为看起来您只是在重复Move类中的逻辑。为了添加任何其他细节,我有一个问题:您将这个toString()方法添加到哪个类

  • 您可以像调用其他方法一样调用此方法。首先,您需要一个对象的实例来调用它:

    someObj.toString()

  • 要提供更多详细信息,我需要回答前面的问题。

    这是
    toString()
    Move
    类中实现的吗?如果是,那么我看到的是一个无限循环。而且。。。我真的不明白为什么要创建
    Move
    类的新实例

    无论如何,要在
    Move
    类中生成字符串表示,请尝试以下操作:

    public class Move {
    
      @Override
      public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append(rank).append(file);
        builder.append(newRank).append(newFile);
        return builder.toString();
      }
    
    }
    
    那么,如果您想获得字符串表示,那么您实际正在做的(
    jcb.engineMove(move.toString());
    )是一种不错的方法。

    这是在
    move
    类中实现的
    toString()
    吗?如果是,那么我看到的是一个无限循环。而且。。。我真的不明白为什么要创建
    Move
    类的新实例

    无论如何,要在
    Move
    类中生成字符串表示,请尝试以下操作:

    public class Move {
    
      @Override
      public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append(rank).append(file);
        builder.append(newRank).append(newFile);
        return builder.toString();
      }
    
    }
    

    那么,如果您想获得实际执行的字符串表示(
    jcb.engineMove(move.toString());
    )是一种不错的方法