Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在执行静态导入时调用静态类型方法的语法是什么?_Java_Syntax_Static_Static Import - Fatal编程技术网

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());