gpt4 book ai didi

java - 这部分代码是什么

转载 作者:行者123 更新时间:2023-11-30 05:02:45 24 4
gpt4 key购买 nike

我有一些代码演示了通过使用 Runnable 接口(interface)来使用线程。我从某个网站上的代码开始,然后根据自己的喜好进行修改。它有效,但我不明白其中的一部分。我试图将代码简化为我所要求的本质,但我可能删除了太多内容。我在 NetBeans 中的代码可以工作,所以这是可以工作的代码,除非我因为删除了错误的内容而搞砸了它。但让我问我的问题,看看是否可以回答:我不明白的部分是这部分:

public String toString()
{
return "Thread " + Thread.currentThread().getName() + ": " + countDown;
}

在最长的时间里,这在我看来就像一个成员变量,其名称在运行时动态设置为等于当前线程的名称。但我也在不止一处读到过,你不能在 Java 中动态命名变量,所以我想这不是我所关注的。然后,我意识到 NetBeans 希望我将 @Override 放在此代码部分之前,因为某些内容正在被覆盖。但我不明白到底什么被覆盖。我是否重写了某些父类的构造函数?如果是的话,是什么类(class)?

无论如何,这是代码:

package countdown;

public class Counter implements Runnable
{
private int countDown = 5;
public String toString()
{
return "Thread " + Thread.currentThread().getName() + ": " + countDown;
}


public void run()
{
while(true) {
System.out.println(this);
if(--countDown == 0)
{
return;
}
}
}
}
package countdown;

public class Main
{

public static void main(String[] args)
{
for(int i = 1; i <= 5; i++)
new Thread(new Counter(), "" + i).start();
}

}

最佳答案

每个类都实现toString( ),因为它是由Object定义的。然而,toString() 的默认实现很少能满足需要。

对于您创建的最重要的类,您将需要重写toString()并提供您自己的字符串表示形式。幸运的是,这很容易做到。 toString( ) 方法具有以下一般形式:

String toString( )   

当在 System.out.println() 方法中传递对象引用时,会自动调用对象的 toString() 方法。

<小时/>

@Override 充当读者的文档和编译器中的双重检查。使用@Override注释来指示一个方法正在重写基类中的另一个方法。

例如

@Override
public String toString()
{
return "Thread " + Thread.currentThread().getName() + ": " + countDown;
}

参见:When do you use Java's @Override annotation and why?

关于java - 这部分代码是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6120236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com