私はまだ静的と動的の違いについて少し混乱しています。私が知っていることから、静的使用型の間は動的オブジェクトが使用され、その動的は実行時に解決され、静的はコンパイル時に解決されます。 this.lastName.compareTo(s1.lastName)ではなく動的バインディングを使用する必要がありますか?これはなぜ動的バインディングではなく静的バインディングですか?
key.compareTo(リスト[位置-1])
public static void insertionSort (Comparable[] list)
{
for (int index = 1; index < list.length; index++)
{
Comparable key = list[index];
int position = index;
while (position > 0 && key.compareTo(list[position-1]) < 0) // using dynamic binding
{
list[position] = list[position-1];
position--;
}
list[position] = key;
}
}
なぜ(this.lastName.compareTo(s1.lastName))スタティックバインディングを動的使用しないバインディングを使用しますか?
private String firstName;
private String lastName;
private int totalSales;
@Override
public int compareTo(Object o) {
SalePerson s1 = (SalePerson)o;
if (this.totalSales > s1.getTotalSales())
{
return 1;
}
else if (this.totalSales < s1.getTotalSales())
{
return -1;
}
else //if they are equal
{
return (this.lastName.compareTo(s1.lastName)); //why is this static binding??
}
}
をスタティックバインディングを使用S1の種類を知っていますか?そうであれば、 'String'はfinal型であるため、拡張することはできません。したがって、そのメソッドのどれもオーバーライドできません。したがって、実装はコンパイル時に知られています。 – azurefrog
はいlastNameは文字列です!グッドキャッチ、私はそれを見つけませんでした! – Challenger
しかし、なぜkey.compareTo(list [position-1])がdyamicバインディングを使用していますか? – Challenger