在java中使用对象类的位置?

时间:2012-09-05 12:36:40

标签: java object

我需要了解java中的对象类。我想知道为什么我们使用它以及在何处使用它的代码很少

Object obj = arg0.getItemAtPosition(arg2);
String str = obj.toString();

5 个答案:

答案 0 :(得分:2)

所有“Object”都继承自Object,所以基本上Java中的任何类都属于Object类型。

http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

因此,所有类都隐含了一些方法:


Method Summary

protected  Object   clone() 

 boolean    equals(Object obj) 

protected  void finalize() 

 Class  getClass() 

 int    hashCode() 

 void   notify() 

 void   notifyAll() 

 String toString() 

 void   wait() 

 void   wait(long timeout) 

 void   wait(long timeout, int nanos) 

如有必要,您可以覆盖这些方法以提供自己的功能。

例如,您可以覆盖toString方法以返回您认为总结您的特定类实例的String。然后,如果您将Object传递给System.out.println之类的内容,则会打印toString方法返回的内容。

更多阅读:

http://journals.ecs.soton.ac.uk/java/tutorial/java/javaOO/objectclass.html

以下是一些很好的继承教程:

http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

http://docs.oracle.com/javase/tutorial/java/concepts/inheritance.html

http://www.cs.utexas.edu/~lavender/courses/tutorial/java-06.pdf

答案 1 :(得分:1)

Object是Java中所有类的超类。如果有可能返回多个类型,则返回Object(或)如果API设计为更通用,则将返回Object

如何使用返回的对象?

根据上下文,你可能需要像你一样投射(或)做toString()

答案 2 :(得分:1)

通常Object只应在处理不同或未知类型的元素集合时使用。然后通常会跟着instanceof和演员陈述。许多API返回Object然后可以提供不同的类型,其中一些是Java 4及更早版本之前的保留。在可能的情况下,这应该替换为泛型。

修改

结合基本规则,您不应该执行以下操作:Object ob = new Object();永远不应该有理由在任何代码中实例化Object。应该使用的唯一时间Ojbect是不知道类型的时间。

有关泛型如何变化的示例是Collections.max。在java 4中,这返回ObjectJava 4 Collections),在java 6中,它有一个返回通用TJava 6 Collections)的版本。

java 4:public static Object max(Collection coll)

返回Object,因为当时Collection不是通用的

java 6:public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)

返回T,因为后Java 5 Collection是通用的。

指出过去很多API返回Object只是因为Java没有泛型。现在,在大多数情况下,应该使用泛型,但并非所有API都已更新。展望未来,你应该尽可能尝试使用泛型而不是Object。

答案 3 :(得分:1)

当未知变量的特定类时,将使用Object类。 Object类是许多类的父类(Integer,Sting,...等)。在上面提到的情况下,getItemAtPosition()类返回一个Object实例,因为一个微调器例如可以有许多不同的类类型,所以它返回一个通用的(Object),然后你把它转换为当目标类型在上下文中已知时,字符串(或其他类,具体取决于具体情况)。

答案 4 :(得分:1)

为什么我们使用它因为..

  • Java选择让单个类成为最终的父类 所有的东西都有一种简单的方法来传递任意武器 对象,无需知道其类型

    即。您可以使用声明的Object类型来引用每个项目   在类型系统中,甚至是使用其包装类的基元。

  • Java需要在每个存在的平台上运行(无论是移动,Windows,Linux等),编写大量代码以在每个平台上运行都是一项使命。因此,Java创建了原生。这样,所有对象都被注册为JVM可以理解和执行的本机对象。不要忘记JVM是用C ++编写的(无论它执行的平台如何)。

  • 对于垃圾收集,最终方法由JVM调用 不需要对象。