我需要了解java中的对象类。这里有一些代码我想知道我们为什么使用它以及在哪里使用它
Object obj = arg0.getItemAtPosition(arg2);
String str = obj.toString();
所有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
为什么我们使用它,因为..
Java 选择使单个类成为所有事物的最终父类,以便有一种简单的方法可以传递任意对象,而无需知道其类型
即,您可以使用声明的 Object 类型来引用类型系统中的每个项目,甚至是使用其包装类的基元。
Java 需要在所有存在的平台(无论是移动设备、Windows、Linux 等)上运行,并且编写大量代码以在每个平台上运行是一项任务。因此,Java 创建了本机。这样,所有对象都被注册为 JVM 可以理解和执行的本机对象。不要忘记 JVM 是用 C++ 编写的(不管它在什么平台上执行)。
当变量的特定类未知时使用 Object 类。对象类是许多类(Integer、Sting、...等)的父类。在上面提到的情况下,getItemAtPosition()
类返回一个Object
实例,因为例如微调器可以有许多不同的类类型,所以它返回一个通用的(对象),然后你将它转换为字符串(或其他类,具体取决于情况)当目标类型在上下文中已知时。
Object
是Java中所有类的超类。如果有可能返回多个类型,则将返回 Object(或)如果 API 设计为更通用,Object
则将返回。
如何使用返回的对象?
根据上下文,您可能需要toString()
像您所做的那样施放(或)做。
通常Object
只应在处理不同或未知类型的元素集合时使用。然后通常紧随其后的是instanceof
and cast 语句。许多 APIObject
在可以提供不同类型时返回,其中一些是 Java 4 和泛型之前的更早版本的保留。只要有可能,这应该用泛型代替。
编辑
结合基本规则,你永远不应该做以下事情:永远不应该在任何代码Object ob = new Object();
中实例化。Object
唯一Ojbect
应该使用的时间是当类型不知道时。
泛型如何改变的一个例子是Collections.max
. 在 java 4 中返回Object
(Java 4 Collections),在 java 6 中,这有一个返回泛型的版本T
(Java 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。