【发布时间】:2010-12-08 01:26:35
【问题描述】:
我的方法将对象作为输入。我如何确定它的类型,然后相应地进行转换?
例如:binarySearch( Object o );
在 binarySearch 方法中,我需要一种方法来确定 Object o 的类型(或类)。然后我需要用那种类型来投射它。我该怎么做???
更具体地说,对象 o 是基类的子类(EG SalariedEmp 是 Employee 的子类),我特别需要基类。
编辑:
我想出了如何做我想做的事,这真的应该是一个完全不同的问题。我需要使用来自Comparable 的 .compareTo 方法来设置一种方法来根据来自这些对象的私有数据比较两个对象。我所要做的就是使用implements 关键字将我的类实现为“Comparable”。因此,无论在我的 binarySearch 方法中比较什么类型的对象,如果它们是相同(未知)类型并且实现了 Comparable,它就可以工作。这使得我的 binarySearch 方法非常适用于任何类型的可比类。
所以,平心而论,我会接受涵盖原始问题的答案。
:)
【问题讨论】:
-
为什么不让它接受一个员工而不是一个对象?
-
通常,这是使用 instanceof 运算符完成的,但如果您发布更多代码,我们可能会帮助您找到更好的解决方案,可能会使用泛型,因为它看起来好像您正在处理有一个集合。
-
“我需要...确定类型...”为什么?当您将基类的实例放入同一个容器时,通常会忘记它们的派生类型。您记录了您只关心它们实现基类型接口的事实。
-
@Etienne de Martel 因为我希望它可以广泛用于不同的对象,假设它们是可比的。 @Karl Knechtel 好吧,无论如何,我想通了。我将进入我的方法的所有内容都转换为 Comparable,无论它是什么......所以我假设输入的任何对象都可以与另一个相同类型的对象相媲美......但是如果它们不是相同类型怎么办?跨度>
-
所以,是的,我只是想创建一个采用 Objects 的方法,以便我可以将它从我的类中取出,并将其放入我的 ToolBox 类中以用于通用目的。示例方法是 BinarySearch、QuickSort 等……所以这些方法适用于各种不同的 Comparable 对象。
标签: java types casting object downcast