目前我在做
import org.easymock.EasyMock;
...
foo.bar(EasyMock.<List<String>>anyObject());
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法避免提及课程EasyMock.我有这样的想法:
import static org.easymock.EasyMock.anyObject;
...
foo.bar(anyObject<List<String>>());
Run Code Online (Sandbox Code Playgroud)
然而,这不编译.还有其他办法吗?
我有一个疑问,我有一个类,我在其中对导入常量使用不同的静态导入,我的问题是我收到错误消息:Too many static imports may lead to messy code. 但是在单元测试中看起来这不是一个坏习惯。例如在单元测试类中,我使用这个导入有任何问题:
import static com.rccl.middleware.kidsclub.engine.web.controller.KidController.KID_FIND_PATH;
import static com.rccl.middleware.kidsclub.engine.web.controller.KidController.KID_LIST_PATH;
import static com.rccl.middleware.kidsclub.engine.web.controller.KidController.KID_PATH;
import static com.rccl.middleware.kidsclub.engine.web.controller.KidController.KID_REGISTER_ALL_PATH;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.then;
import static org.mockito.Mockito.times;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;```
Run Code Online (Sandbox Code Playgroud)
相反在我的课堂上:
import static org.springframework.http.HttpStatus.BAD_REQUEST;
import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
import static org.springframework.http.HttpStatus.NOT_FOUND;
import static org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY;
Run Code Online (Sandbox Code Playgroud)
这些导入给我带来了问题,我收到了错误消息:过多的静态导入可能会导致代码混乱。我不太确定为什么。
我无法访问 pmd 文件来找出此问题的真正原因。有什么线索吗?
谢谢!
public class OnlyStatic {
static O1 o1 = new o1();
static O2 o2 = new o2();
public static int compute(int whatever) {
return o1.foo+o2.bar+whatever;
}
}
Run Code Online (Sandbox Code Playgroud)
在另一个类中,使用该方法compute,或者通过static import:
static import OnlyStatic.compute
int a = OnlyStatic.compute(3);
Run Code Online (Sandbox Code Playgroud)
或者直接假设调用者在同一个包中:
int a = OnlyStatic.compute(3);
Run Code Online (Sandbox Code Playgroud)
o1和o2何时初始化?在导入时,还是compute()第一次调用时?
下面类导致在行编译错误 println("Hello World!");:The method println(String) is undefined for the type StaticImport:
import static java.lang.Math.*;
import static java.lang.System.*;
public class StaticImport {
public static void main(String[] args) {
println("Hello World!");
out.println("Considering a circle with a diameter of 5 cm, it has:");
out.println("A circumference of " + (PI * 5) + " cm");
out.println("And an area of " + (PI * pow(2.5,2)) + " sq. cm");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么可以在java.lang.Math中访问pow方法而不显式导入pow,这与需要使用方法名称'out'的println方法不同?