目前我在做
import org.easymock.EasyMock;
...
foo.bar(EasyMock.<List<String>>anyObject());
我想知道是否有办法避免提及班级EasyMock
。我有类似的想法:
import static org.easymock.EasyMock.anyObject;
...
foo.bar(anyObject<List<String>>());
然而,不能编译。还有其他办法吗?
答案 0 :(得分:6)
无法为静态导入的方法提供类型参数(不像在第一个代码段中那样包含类名)。根本没有这样的语法支持它。
请参阅Java语言规范中的Section 15.12, Method Invocation Expressions:
MethodInvocation:
MethodName ( ArgumentListopt )
Primary . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
super . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
ClassName . super . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
TypeName . NonWildTypeArguments Identifier (ArgumentListopt)
第一个选项是唯一一个不涉及前一个点的选项,并且该选项不包括提供类型参数的可能性(正如其他选项那样)。
答案 1 :(得分:1)
没有这样的语法。你可以做的是为某个变量赋值,以便java为你推断出类型。不幸的是,它不会给你更多可读的代码。
答案 2 :(得分:0)
我用
import static org.easymock.EasyMock.anyObject;
...
foo.bar((List<String>) anyObject());