Javaで三項演算子によってメソッドの引数を渡す:私はこのコードを実行するとコード
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
}
}
私は三項演算子に似たタイプを使用してLine 3
Foo.java:24: error: no suitable method found for test(INT#1)
test(5>8? 5:"ha"); // Line 3
^
で次のエラーを取得することはありませんエラーを返す。しかし、異なるタイプを使用すると、メソッド呼び出しにのみエラーが発生しますが、私は別のオーバーロードされたメソッドstatic void test(Object s){}
、その後、//Line 3
コンパイルを追加すると、それはコールSystem.out.println(5<8? 5:"ha");
のために動作します。
誰でもこのシナリオを説明できますか?
よくお答えください! –
ここでは、三項演算子の戻り値の型を決定する方法を理解しています。あなたの説明に基づいて、 'System.out.println()'メソッドが、Objectをパラメータとして受け取り、PrintStreamに 'public void println(Object x)'メソッドがあるオーバーロードされたメソッドがあるかどうか疑問に思った。あなたの答えにこの点を加えることができれば、それは他の人には役に立ちます。 –
私はそれがまったく別の問題だと感じます。また、ほとんどのJavaプログラマは、好きなオブジェクトを 'System.out.println'に渡すことができることを知っています。 –