以例如這些代碼片段:使用Comparable接口比較兩個對象時,this.method變量與object.method有什麼不同?
public int compareTo(DSA_Student C){
if (this.getName().compareTo(C.getName())<0) return -1;
else
if (this.getName().compareTo(C.getName())>0) return 1;
else return (new Integer(this.getStudentId()).compareTo(new Integer(C.getStudentId())));
}
在主類:
SortedSet <DSA_Student> S1=new TreeSet<DSA_Student>();
DSA_Student a=new DSA_Student("A",10);
DSA_Student b=new DSA_Student("F",40);
DSA_Student c=new DSA_Student("B",49);
DSA_Student d=new DSA_Student("E",45);
DSA_Student e=new DSA_Student("D",30);
DSA_Student f=new DSA_Student("C",45);
DSA_Student g=new DSA_Student("B",45);
S1.add(a);
S1.add(b);
S1.add(c);
S1.add(d);
S1.add(e);
S1.add(f);
S1.add(g);
我想知道什麼this.getName()和C.getName()指的是和怎麼做編譯器知道它們是兩個不同的對象,從而進行比較?
編譯器**不知道它們引用了兩個不同的對象,只是它們引用'this'對象以及C(嚴重命名)參數引用的任何對象。它們實際上可以是同一個對象,或者C實際上可以是空引用。 –
'this'是調用'compareTo'的實例; 'C'是它傳遞的參數。例如在'a.compareTo(b)''這個''是'a','C'是'b'。 –
注意:'compareTo'根本不會被調用,因爲你傳入了一個'Comparator',除非'Comparator'碰巧調用'compareTo'。 –