次のコードは過去の論文に複数の間違いがありましたが(私はそれを簡単に見つけて修正しましたが)、理解するのに苦労しているのは出力です。出力の最初の行はどのように生成されますか?
クラス:
import java.util.*;
class Count {
int i, s, o, l, c;
public Count(Object[] objects){
for(int j=0; j<objects.length; j++){
count(objects[j]);
}
}
public void count(Collection x){c++;}
public void count(List x){l++;}
public void count(Double x){i++;}
public void count(Object x){o++;}
public void count(String x){s++;}
public String toString(){
return c + ", " + l + ", " + i + ", " + o + ", " + s;
}
}
import java.util.LinkedList;
public class Test {
static Object[] objects = {new Double(10), new String("Q1"),
new Object(), new LinkedList()};
public static void main(String args[]){
System.out.println(new Count(objects));
for(Object o : objects)
System.out.println(o);
}
}
生成される出力:
0, 0, 0, 4, 0
10.0
Q1
[email protected]
[]
誰かがコードを参照して出力を説明することができれば、私は感謝します。
サイドノート:出力の最初の行は私を困惑させるものです。他のビット私は理解しています。 最後の注記:これは出力に関する固有の質問です。どのような質問でも重複しているわけではありません(私の知る限りでは、「可能な重複」へのリンクは「この出力はどのように生成されますか」ではなく、メソッドのオーバーロードに関するもので、両方の質問の結果は互いにユニークです)正確な答えが役に立つでしょう。ありがとう。
最初の行は、あなたが数えた別のものの番号を印刷しているだけです。 4つの要素を持つ 'Object'の配列をコンストラクタに渡すので、' o'は '4'です。 – azurefrog
最初の行は 'Count'の' toString() 'メソッドであり、' Count'の特定のメソッドが何回呼び出されたかを示しています。 'c'は' count(Collection) 'が呼び出された回数で、' l'は 'count(List)'が呼び出された回数などです。 – FriedSaucePots
あなたは出力について混乱していますか? '1/0、0/1、1、1、1'ではなく' 0、0、0、4、0'ですか?もしそうなら、@ Tomが投稿したように、これは答えられました。 – Ironcache