关于静态和动态之间的区别,我仍然有些困惑。据我所知,动态使用对象,而静态使用类型,动态是在运行时解决的,而静态是在编译时解决的。所以 this.lastName.compareTo(s1.lastName) 不应该使用动态绑定吗?
key.compareTo(list[position-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??
}
}