黑马程序员技术交流社区

标题: 【求助】instanceof要怎么用呢? [打印本页]

作者: 林豪    时间: 2012-4-30 21:55
标题: 【求助】instanceof要怎么用呢?
instanceof要怎么用呢?
能不能举几个例子
作者: 杨志    时间: 2012-4-30 22:15
这就是去判断对象的类型。
判断对象是否属于你定义的类型。
  1. public class Test{
  2. }

  3. public vid test(){
  4.    Test test = new Test();
  5.    System.out.println(test instanceof Test );
  6. }
复制代码
这里test是Test类型的。那就就会输出true;
如果不是的话就会是false;不知道能不能帮上你!谢谢!
作者: 何阳    时间: 2012-4-30 22:33
//当你传递一个类类型变量到一个方法中的时候
//比较2个对象的成员属性,如果2个对象不是同一个类产生的实例对象,
//你觉的他们有可以性吗?
//例如,你要比较2个人的年龄是否是一样的,你肯定会那一个人的年龄去
//和另外一个人比较,但是在你写方法的时候,你给确定调用者给你传进来的
//就是一个人吗?可能是一个动物 ,那我们怎么去比较,所以当外界调用我们的
//方法时,我们应该做健壮性的判断,提高程序的安全性,

//用this instanceof d 判断传进来的是否和当前对象属于同一类型
//不是,直接抛异常,是,你才有资格和我比较。o了。

作者: 陈苓    时间: 2012-4-30 23:19
用于判断类型是否相同
用在多太上
代码演示:
abstract class Animal
{
        abstract void eat();
}


class Dog  extends Animal
{
        void eat()
        {
                System.out.println("啃骨头");
        }
        void lookHome()
        {
                System.out.println("看家");
        }
}

class Cat extends Animal
{
        void eat()
        {
                System.out.println("吃鱼");
        }
        void catchMouse()
        {
                System.out.println("抓老鼠");
        }
}

class Pig extends Animal
{
        void eat()
        {
                System.out.println("猪饲料");
        }
        void gongDi()
        {
                System.out.println("拱地");
        }
}


class DuoTaiDemo2
{
        public static void main(String[] args)
        {

               
                method(new Cat());
                method(new Dog());
        }
        public static void method(Animal a)//Animal a = new Cat();
        {
                if(a instanceof Cat)    // 对象 instanceof 类型 判断具体对象是否是指定的类型。
                                // instanceof是一个关键字,用于判断对象的类型,
                                // 什么时候用?当进行向下转型时,先判断该对象是否符合被转成的子类型。
                {
                        Cat c = (Cat)a;//ClassCastException
                        c.catchMouse();
                }
                else if(a instanceof Dog)
                {
                        Dog d = (Dog)a;
                        d.lookHome();
                }
       

                a.eat();
        }
}
这里简单说明,假如来了一个猫,你并不做对象类型判断就把他转成狗,那是不行的。这个关键字的用途就是判断对象类型是否相同。以后在写程序遇到类型转换的时候就可以用
作者: 周海诚    时间: 2012-5-1 09:55
本帖最后由 周海诚 于 2012-5-1 10:01 编辑

"instanceof ":
用法:
trace(obj instanceof Panel);
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true 。
如果 object 不是指定类的一个实例,或者 object 是 null ,则返回 false

代码解释最清楚:
1.
alert(""instanceofObject);//false
alert([]instanceofArray);//true
2.

function judge(){
var arr=new Array();
alert(typeof(arr));//object
alert((arr instanceof Array));//true
}


作者: xiwangliujiao    时间: 2012-5-2 11:19
instanceof  的作用就是来判断一个对象是否属于某个类,判断的结果为布尔类型的,如 Person p=new Person()    p  instanceof  Person   就是true 了
作者: 隋营营    时间: 2012-5-2 11:24
一个例子就够了:
String sg = "黑马";
System.out.println(sg instanceof String); //true
作者: ^.^晴天    时间: 2012-5-2 12:15
instanceof用于判断对象的具体类型,只能用于引用数据类型判断,一般应用于向下转型
  public static void method(Animal a){
     a.eat();
   if(a  instanceof cat ){  //如果是猫就执行
Cat  c=(Cat)a;
  c.catchMouse();
  }
}




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