导入静态是一种好的做法吗?

0wi1tuuw  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(331)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。

14天前关门了。
改进这个问题
我在用java编写代码时问自己 import static com.example.method 是一个很好的方法,还是把全班导入比较好。

a14dhokn

a14dhokn1#

取决于上下文,不存在可在所有情况下使用的显式规则。但最常见的用法是在执行测试时,需要导入assert.*或mockito.*之类的类,以避免重复assertion.assertequals很多时候,最好是这样做:

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;

class ErrorsControllerImplTest {

    @Test
    void should_return_all_the_errors_types() {
        ErrorsController controller = new ErrorsControllerImpl();

        assertAll(
                () -> assertEquals(58, controller.getAllErrors().size()),
                () -> assertEquals("BadRequestStatus {code=4000509, message='Site must have a value'}",
                        controller.getAllErrors().get(0)));
    }
}

正如另一位用户所说,这样做的目的是使代码可读并删除重复的部分。

0g0grzrc

0g0grzrc2#

这是一个喵。。。特点,要真诚。

import static java.util.List.*; 
import static java.lang.String.*;
import static java.lang.Math.*;
...
of(1);                        //of 1...wat
valueOf(mother);              //really..
random();                     //i'm scared
valueOf(E);

唯一真正有用的场景是需要不断使用其他类的常量。例如在上面的例子中,如果类是某种特定的 MathUtils 必须调用 Math 的方法。
或者在top answer的场景中,当运行测试类时,例如 Mockito .

相关问题