java - Puzzling "reference to println is ambiguous" compilation error -


this question has answer here:

if compile , run following class (with java se 7, if matters),

class foo {      public static void main(string[] args) {         system.out.println(true ? null : 42);         // system.out.println(null);     } } 

i following output

null 

so far, good. however, if uncomment second statement in main, compilation error:

foo.java:5: error: reference println ambiguous, both method println(char[]) in printstream , method println(string) in printstream match        system.out.println(null);                   ^ 

why java compiler throw error if argument of system.out.println null, doesn't if argument true ? null : 42?

the type of expression true ? null : 42 integer therefore unambiguous system.println(object) should called.

if call system.println(null) there multiple candidate methods , compiler can't decide 1 take.


Comments

Popular posts from this blog

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

android - How to create dynamically Fragment pager adapter -

html - Outlook 2010 Anchor (url/address/link) -