gpt4 book ai didi

java - 为什么表达式 `(true) ? null: null` 被视为 char[]

转载 作者:行者123 更新时间:2023-11-29 03:18:13 25 4
gpt4 key购买 nike

System.out.println((true) ? null: null);

问题:

为什么我有

The method println(char[]) is ambiguous for the type PrintStream

以及为什么不计算它,而将null作为参数传递给println方法以其他方式,为什么表达式(真)? null:null 被视为 char[]

编辑:IDE 使用 Eclipse。

最佳答案

您没有正确指定错误。

查看 PrintStream.println() 的重载.您会注意到唯一的引用类型是 char[] , StringObject .

Netbeans 给我错误

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - reference to println is ambiguous both method println(char[]) in java.io.PrintStream and method println(java.lang.String) in java.io.PrintStream match

这正是我们所期望的方式:它不能在两者之间进行选择,因为两者都同样有效。

它没有提到 Object 重载的原因可以在 JLS 的小字中找到,章节 $15.12.2. Compile-Time Step 2: Determine Method Signature :

For example, declaring m(Object...) in a class which already declares m(Object) causes m(Object) to no longer be chosen for some invocation expressions (such as m(null)), as m(Object[]) is more specific.

你可以在第一阶段的解释中找到这个。

关于java - 为什么表达式 `(true) ? null: null` 被视为 char[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25246646/

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