2012-08-31 18 views

回答

5

这是一个好方法吗?

如果你不能想出一个好的理由去做某件事,那它可能不是一个好主意。 ;)

也许是因为Comparable扩展整数,字符串,双精度等?

数字和字符串实现可比较,但你有正确的想法。

那么是什么?

在Java中你可以做很多奇怪的事情,但是其中大多数都没有用处。 ;)

在这种情况下,它并不特别有用,因为这些对象不是相互比较的。例如Arrays.sort(W);将无法工作。

2

这有效,但没有多大意义。 IntegerStringDouble确实实现了接口,但是采用通用的方式(即,Integer实现Comparable<Integer>String实现了Comparable<String>等)。

因此,如果这是您要实现的目标,那么您将无法将StringDouble进行比较。

2

我不认为这是一个好主意。如果您必须存储这样的“异构”集合,请使用Object[]。 指定Comparable作为通用接口也给出了错误的建议,您可以对数组进行排序,这是错误的,因为不同的比较器不能合作。

0

使用定义要存储在数组或集合中的对象的常用属性的类的接口。

如果您直接使用compareTo方法,例如对数组进行排序,请使用Comparable。如果不采取对象,因为这将不会让读者感到困惑。如果不是,请注意选择Comparable而不是Object,这将不会以有用的方式限制数组中的对象,因为有很多类实现它(并且它在不断增长)。

但请注意,您很少需要存储数组中的字符串,双精度和整数。事实上,你必须是一个信号,你应该检查你的设计。

0

-全部Wrapper Objects实施Comparable,这就是它的工作原理。

-此外可比好,当你需要排序仅根据一个参数,但它是很好用Comparator当你想排序的方式不止一种....

1
Comparable w[] = new Comparable[5]; 

这构建了一个实现可比接口的项目数组。 标准类型的所有包装都实现了这个接口,所以一切都可以存储在那里。 这样做的缺点是比较方法是用来比较同一类的对象。在这个容器中放置不同类的项目就会失去这个目的。

因此,使用Comparable接口作为容器的基类型可能是一个糟糕的主意。因为它没有意义。

更好的选择是使用Object [],它是所有Java对象的超类型。

相关问题