gpt4 book ai didi

java - 在省略类名的同时在本地调用通用静态方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:52 25 4
gpt4 key购买 nike

这是我要调用的方法。

public static <N,E> void doGenericStatic2(N number, E element) {
System.out.println(number);
System.out.println(element);
}

这是我正在测试调用先前方法的方法(两者都位于名为 MyClass 的同一个类中)

    public static void testInvokeGenericMethodLocally() {
doGenericStatic2(100, "Text");
// <Integer,String>doGenericStatic2(100, "Text"); //Syntax error, insert "super ( ) ;" to complete Statement
MyClass.doGenericStatic2(100, "Text");
MyClass.<Integer,String>doGenericStatic2(100, "Text");
}

为什么这个特殊情况(第二次调用测试)<Integer,String>doGenericStatic2(100, "Text");生成编译时错误?

最佳答案

这在 JLS 15.12 中有描述,它描述了方法调用语法:

MethodInvocation:
MethodName ( [ArgumentList] )
TypeName . [TypeArguments] Identifier ( [ArgumentList] )
ExpressionName . [TypeArguments] Identifier ( [ArgumentList] )
Primary . [TypeArguments] Identifier ( [ArgumentList] )
super . [TypeArguments] Identifier ( [ArgumentList] )
TypeName . super . [TypeArguments] Identifier ( [ArgumentList] )

请注意 [TypeArguments]选项仅在方法出现在“虚线”(我的技术名称)之后才可用。 JLS 没有具体说明这是为什么,尽管 Thomas 的评论是,否则关于 < 是否会变得模棱两可。是 TypeArguments 开始或小于,可能是正确的。

关于java - 在省略类名的同时在本地调用通用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32396941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com