gpt4 book ai didi

java - Java 8 上的 getGenericReturnType 输出不正确

转载 作者:搜寻专家 更新时间:2023-11-01 03:00:18 24 4
gpt4 key购买 nike

对于使用 Java 8 (JDK 1.8.0_71) 和 Mockito(2.0.44-beta 版)的特定反射调用,我得到了一个奇怪的结果。

调用以下内容:

BDDMockito.class.getMethod("given", Object.class).getGenericReturnType().getTypeName()

给出了这个错误的结果:

org.mockito.BDDMockito.org.mockito.BDDMockito$BDDMyOngoingStubbing<T>

这看起来不对(包不存在),我还没有在其他 Java 类或 BDDMockito 的其他方法中看到这个问题。我认为结果应该是:

org.mockito.BDDMockito$BDDMyOngoingStubbing<T>

我得到的结果有解释吗?这是一个已知问题还是我应该向 Oracle 报告?

最佳答案

是的,这是一个错误。已在工单中报告JDK-8054213目前所有版本(包括当前的 JDK 9 beta)均未解决。

请注意,您可以使用更简单的示例重现它。问题来自使用嵌套类作为方法返回类型。 getGenericReturnType 在输出中错误地重复了类名。这可以通过静态嵌套类或内部类重现。

package parent;

public class Main {

public static void main(String[] args) throws Exception {
System.out.println(Main.class.getMethod("bar").getGenericReturnType());
// prints "parent.Main.parent.Main$Bar<T>"
}

public <T> Bar<T> bar() {
return null;
}

/*static*/ class Bar<T> {}

}

关于java - Java 8 上的 getGenericReturnType 输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658241/

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