Comparable w[] = new Comparable[5];
w[0] = 1;
w[1] = "string";
w[2] = 2.0;
这是一个好方法吗?实际上为什么它会起作用(我只是随机尝试)?也许是因为 Comparable 扩展了整数、字符串、双精度等?所以呢?
Comparable w[] = new Comparable[5];
w[0] = 1;
w[1] = "string";
w[2] = 2.0;
这是一个好方法吗?实际上为什么它会起作用(我只是随机尝试)?也许是因为 Comparable 扩展了整数、字符串、双精度等?所以呢?
这是一个好方法吗?
如果你想不出做某事的好理由,那可能不是一个好主意。;)
也许是因为 Comparable 扩展了整数、字符串、双精度等?
数字和字符串实现了 Comparable,但您的想法是正确的。
所以呢?
你可以在 Java 中做很多奇怪的事情,但大多数都没有用。;)
在这种情况下,它并不是特别有用,因为对象彼此不可比较。例如 Arrays.sort(w); 不会工作。
这行得通,但没有多大意义。Integer
,String
并且Double
确实实现了Comparable
接口,但是以通用的方式(即Integer
实现Comparable<Integer>
,String
实现Comparable<String>
等)。
因此,如果这是您要实现的目标,您将无法将 aString
与 a进行比较。Double
我不认为这是一个好主意。如果Object[]
您必须存储这样的“异构”集合,请使用。指定Comparable
为通用接口也会给出错误的建议,即您可以对数组进行排序,这是错误的,因为不同的比较器不能合作。
Comparable w[] = new Comparable[5];
这构造了一个实现可比较接口的项目数组。标准类型的所有包装器都实现了这个接口,所以所有东西都可以存储在那里。这样做的缺点是比较方法用于在同一类的对象之间进行比较。将不同类别的物品放入此容器中会破坏该目的。
因此,使用 Comparable 接口作为容器的基本类型可能是个坏主意。因为没有意义。
更好的选择是使用 Object[],它是所有 Java 对象的超类型。
使用定义要存储在数组或集合中的对象的通用有用属性的类接口。
如果您compareTo
直接或不直接使用该方法,例如通过对数组进行排序,请使用 Comparable。如果不使用 Object,因为这对读者来说不会那么混乱。如果不是,请注意选择 Comparable 而不是 Object 这不会以有用的方式限制数组的对象,因为有许多实现它的类(并且它正在增长)。
但请注意,您很少需要将字符串、双精度数和整数存储在数组中。您必须这样做是一个信号,您应该检查您的设计。
-所有Wrapper Objects
工具Comparable
,这就是它的工作原理。
-此外,当您只需要根据一个参数进行排序时,Comparable 很好,Comparator
但当您想要以多种方式排序时使用它会很好......