0

我需要了解java中的对象类。这里有一些代码我想知道我们为什么使用它以及在哪里使用它

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

5 回答 5

2

所有Object的 " " 都继承自Object,所以基本上 Java 中的任何类也是 typeObject的。

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

于 2012-09-05T12:39:17.397 回答
1

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

  • Java 选择使单个类成为所有事物的最终父类,以便有一种简单的方法可以传递任意对象,而无需知道其类型

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

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

  • 对于垃圾回收,当不需要 Object 时,JVM 会调用 finalize 方法。
于 2012-09-05T12:48:26.913 回答
1

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

于 2012-09-05T12:44:13.353 回答
1

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

如何使用返回的对象?

根据上下文,您可能需要toString()像您所做的那样施放(或)做。

于 2012-09-05T12:38:16.343 回答
1

通常Object只应在处理不同或未知类型的元素集合时使用。然后通常紧随其后的是instanceofand cast 语句。许多 APIObject在可以提供不同类型时返回,其中一些是 Java 4 和泛型之前的更早版本的保留。只要有可能,这应该用泛型代替。

编辑

结合基本规则,你永远不应该做以下事情:永远不应该在任何代码Object ob = new Object();中实例化。Object唯一Ojbect应该使用的时间是当类型不知道时。

泛型如何改变的一个例子是Collections.max. 在 java 4 中返回ObjectJava 4 Collections),在 java 6 中,这有一个返回泛型的版本TJava 6 Collections)。

爪哇 4:public static Object max(Collection coll)

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

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

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

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

于 2012-09-05T12:40:07.477 回答