Doubt: Passing method argument through ternary operator

Moderator: admin

Post Reply
Posts: 10
Joined: Thu Nov 10, 2016 3:07 am

Doubt: Passing method argument through ternary operator

Post by mj.anjuthan »


Code: Select all

public class Foo {

    static void test(String s){
        System.out.println("String called");

    static void test(int s){
        System.out.println("int called");

    public static void main(String[] args) throws Exception {

        test(5>8? 5:8);         // Line 1
        test(5>8? "he":"ha");   // Line 2

        test(5>8? 5:"ha");      // Line 3

        System.out.println(5<8? 5:"ha"); //Line 4
When I execute this code I get the following Error at Line 3

Code: Select all error: no suitable method found for test(INT#1)
                test(5>8? 5:"ha");              // Line 3
Using similar type in the ternary operator does not give error. But using different types gives error only to the method call test(5>8? 5:"ha"); but it works for the call System.out.println(5<8? 5:"ha");

When I add another overloaded method static void test(Object s){}, then the //Line 3 compiles.

Can anyone please explain me this scenario?

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest