黑马程序员技术交流社区

标题: instanceof的问题 [打印本页]

作者: 冯伟超    时间: 2012-12-19 20:09
标题: instanceof的问题
想问下instanceof是怎么运用的?是判断一个对象是否是属于一个类的对象,但是是不是有个前提呢?
一般看到的是Object是和Object一起用,感觉挺迷惑的,求解释?

作者: 高境    时间: 2012-12-19 20:21
instanceof是Java的一个二元操作符。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。可以用在继承中的子类的实例是否为父类的实现。
例子:
String s = "I AM an Object!";
boolean isobject = s instanceof Object;
我们声明了一个String对象引用,指向一个String对象,然后用instanceof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isobject的值为true。
作者: 王钊    时间: 2012-12-19 22:27
instanceof运算符是判断某个obj是否为某个类的实例。
但对于instanceof这个运算符,要注意:当前面的对象是后面类的实例或其子类的实例时都将返回true。
所以,如果要严格判断对象是否为一个类的实例,而又不是它子类的实例时,建议使用obj.getClass()==类名.class。
(这个判断代码用了反射基础知识)。
举个例子,Student是Person类的子类,有Student的一个实例stu,
则stu instanceof Person 返回true,stu instanceof Student返回true。
如果要严格判断,stu.getClass()==Person.class就返回false了,只有stu.getClass()==Student.class 返回true。
希望你能理解。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2