[英]Why/when does System.out.println(); give error: method print(boolean)...not applicable
[英]Why does `System.out.println(null);` give “The method println(char[]) is ambiguous for the type PrintStream error”?
我正在使用代碼:
System.out.println(null);
它顯示錯誤:
The method println(char[]) is ambiguous for the type PrintStream
為什么null
不表示Object
?
PrintStream
中有3個println
方法接受引用類型 - println(char x[])
, println(String x)
, println(Object x)
。
傳遞null
,所有3都適用。 方法重載規則更喜歡具有最特定參數類型的方法,因此不選擇println(Object x)
。
然后編譯器不能在前兩個之間進行選擇 - println(char x[])
& println(String x)
- 因為String
不比char[]
更具體,反之亦然。
如果要選擇特定方法,請將null轉換為所需類型。
例如 :
System.out.println((String)null);
如果調用System.println(null)
則有多個候選方法(使用char []
, String
和Object
參數),編譯器無法決定采用哪一個。
固定
將顯式強制轉換添加到null。
System.out.println((Object)null);
或者使用null對象模式 。
為什么
null
不代表Object?
還有一個特殊的null類型,表達式的類型為null,沒有名稱。
由於null類型沒有名稱,因此無法聲明null類型的變量或轉換為null類型。
空引用是null類型表達式的唯一可能值。 null引用始終可以強制轉換為任何引用類型。
始終可以將null引用分配或強制轉換為任何引用類型
在實踐中,程序員可以忽略null類型,只是假裝null只是一個特殊的文字,可以是任何引用類型
因此null
的類型不是 Object
,盡管它可以轉換為(讀取 - 分配給) Object
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.