黑马程序员技术交流社区

标题: instanceof的用法 [打印本页]

作者: HM王琦    时间: 2013-3-2 19:45
标题: instanceof的用法
本帖最后由 [野狼]~@ 于 2013-3-6 23:33 编辑

class Person
{
private String name;
private int age;
Person(String name,int age)
{
  this.name = name;
  this.age = age;
}

public boolean equals(Object obj)
{
  if(!(obj instanceof Person))//这里的instanceof判断的是什么?
   return false;
  Person p = (Person)obj;
  //System.out.println(this.name+"....."+p.name);
  return this.name.equals(p.name) && this.age == p.age;
}
/**/
public String getName()
{
  return name;
}
public int getAge()
{
  return age;
}
}

instanceof在什么时候用?

作者: 罗海云    时间: 2013-3-2 19:54
class Person
{
private String name;
private int age;
Person(String name,int age)
{
  this.name = name;
  this.age = age;
}

public boolean equals(Object obj)
{
  if(!(obj instanceof Person))//这里的instanceof判断的是什么?
//这里instaceof是判断你传进来的对象是否是Person类型..
一般不确定用Object类型传进来的值,,就可以用instanceof判断/.
return false;
  Person p = (Person)obj;
  //System.out.println(this.name+"....."+p.name);
  return this.name.equals(p.name) && this.age == p.age;
}
/**/
public String getName()
{
  return name;
}
public int getAge()
{
  return age;
}
}
作者: 谢玉成    时间: 2013-3-2 20:14
instanceof 判断左边的类型是否 是和右边的类型一致,一般在类型向下转型时使用,判断要转的类型是否是想要使用类型,这样起到防止类型转换异常抛出。
  例如:现在有一个person类,Student类继承了person类,如果在一个集合里既存有person对象,也存有Student对象,或者还有其他对象,
            这时如果你想调用Student对象里的某个方法时,需要从集合里找出哪个是Student对象,这就要使用到 instanceof做出判断了, if(Obj  instanceof  Student){//...}
           
   希望能帮上你..!!
作者: 陈圳    时间: 2013-3-2 20:19
instanceof是一个判断关键字,判断左边的对象是否属于右边.如果属于就返回ture,不属于就返回flase;
用于类对象判断是否为该类子对象然后作出反应,一般用在多态里,
(Object obj)  
if(obj instanceof Student) 如果输入的类型不是Student的话,就抛异常或者其他动作,否则执行指定操作.




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