为什么不用 Assert.assertTrue() 就可以调用 assertTrue()?

Why assertTrue() can be called without Assert.assertTrue()?

assertTrue() 方法似乎是一个非常普通的静态方法,例如:

public static void assertTrue() {
    ...
}

但是当它被调用时,它看起来很奇怪:

Assert.assertTrue(condition); //Should look like this.
assertTrue(condition); //But in fact it looks like this.

为什么? 如果我想做同样的事情,我应该怎么做?

public static class Logger() {
    public static void log() {
        ...
    }
}

Logger.log(someMessage); //Not cool
log(someMessage); //cool!

非常感谢。

转到源代码文件的顶部并查看导入。你应该看到这样的东西:

import static some.packages.Assert.assertTrue;
// or
import static some.packages.Assert.*;

这是 static 导入。基本上它的作用是使您指定的成员就好像它们是您 class 中的静态成员一样,因此您可以在没有 class 名称的情况下调用它们!

这也可以用 Logger 来完成!

import static whatever.packages.your.logger.is.in.Logger.log;