为什么我们需要在Java中使用Thread.sleep()而不是sleep()?
为什么我们必须在Java中使用为什么我们需要在Java中使用Thread.sleep()而不是sleep()?,java,thread-sleep,Java,Thread Sleep,为什么我们必须在Java中使用Thread.sleep()而不仅仅是sleep()?是什么原因迫使开发人员使用“更长”的版本?因为sleep()是线程的静态方法。您可以静态导入它,然后使用sleep() 请看这里: 另请参见此处()了解为什么要少用静态导入。Java是一种面向对象的语言-每个方法(“函数”)都必须属于一个类,即使它是一个静态方法(例如,请考虑没有“全局”print函数-您必须调用System.out.print)。但是,如果它真的让您烦恼,您可以静态导入该方法: import
Thread.sleep()
而不仅仅是sleep()
?是什么原因迫使开发人员使用“更长”的版本?因为sleep()
是线程的静态方法。您可以静态导入它,然后使用sleep()
请看这里:
另请参见此处()了解为什么要少用静态导入。Java是一种面向对象的语言-每个方法(“函数”)都必须属于一个类,即使它是一个静态方法(例如,请考虑没有“全局”print
函数-您必须调用System.out.print
)。但是,如果它真的让您烦恼,您可以静态导入该方法:
import static java.lang.Thread.sleep
public class MyClass {
public static void main (String[] args) {
sleep (10);
}
}
Thread
类中的sleep()
方法是一种static
方法。我们不使用实例对象访问静态
方法
this.sleep()
和Thread.sleep()
都是相同的,但它违反了惯例
static
关键字意味着它对所有类都是通用的,因为如果使用实例变量访问static
方法,则不清楚 显式地让代码读者知道方法的来源。您可以使用static import来ise just sleep(),因为sleep
是Thread
的静态方法。如果Thread类被扩展。。甚至我们也可以用这个。sleep()对吗?你可以,但不应该。如果覆盖sleep()?使用Thread.sleep()或MyExtendedThread.sleep()。是的,如果它被扩展和重写,那么sleep方法的静态导入将无法正常工作?。所以,毕竟使用了Thread.sleep()似乎更好。我试过并检查了一下。您不能真正重写sleep()
,因为它是本机方法。您可以在子类中创建静态方法sleep()
。但它永远不会被称为。。奇怪。请看下面的答案,以获得更好的解释:
import static java.lang.Thread.sleep
public class MyClass {
public static void main (String[] args) {
sleep (10);
}
}