Java 在执行静态导入时调用静态类型方法的语法是什么?
目前我正在做Java 在执行静态导入时调用静态类型方法的语法是什么?,java,syntax,static,static-import,Java,Syntax,Static,Static Import,目前我正在做 import org.easymock.EasyMock; ... foo.bar(EasyMock.<List<String>>anyObject()); 但是,它不编译。还有其他方法吗?无法为静态导入的方法提供类型参数(不包括类名,就像在第一个代码段中那样)。根本没有这样的语法支持它 请参见Java语言规范中的: MethodInvocation: MethodName ( ArgumentListopt ) Prima
import org.easymock.EasyMock;
...
foo.bar(EasyMock.<List<String>>anyObject());
但是,它不编译。还有其他方法吗?无法为静态导入的方法提供类型参数(不包括类名,就像在第一个代码段中那样)。根本没有这样的语法支持它 请参见Java语言规范中的:
MethodInvocation:
MethodName ( ArgumentListopt )
Primary . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
super . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
ClassName . super . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
TypeName . NonWildTypeArguments Identifier (ArgumentListopt)
第一个选项是唯一一个不涉及前面的点的选项,并且其中一个选项不包括提供类型参数的可能性(与其他选项一样)。
import static org.easymock.EasyMock.anyObject;
...
foo.bar((List<String>) anyObject());
导入静态org.easymock.easymock.anyObject;
...
bar((列表)anyObject());
没有这样的语法。不过,您可以做的是为某个变量指定一个值,以便java为您推断类型。不幸的是,它不会给你更多可读性的代码。Hmm。。。这应该行得通。编译错误是什么?也许应该改进为foo.bar(()anyObject())代码>,根据原始帖子?这与显式提供类型参数不同,对吗?例如,如果anyObject
返回void
,该怎么办?@aioobe,实际上不是,但至少在这种特定情况下它是有效的。正如你所指出的,没有通用的解决方案。你怎么能说它在这种特殊情况下有效?如果条
以字符串
为参数会怎样?我不知道它会这样做,但您的帖子的键入方式与原始帖子列表
不同,而不是
,因此我的问题,而不是我关于应该更改的断言。
import static org.easymock.EasyMock.anyObject;
...
foo.bar((List<String>) anyObject());