一道面试题:这么确定a是不是B类的一个实例。谢谢

解决方案 »

  1.   

    正常的做法:a instanceof B
    比较正常的做法:B.class.isInstance(a)
    比较变态的做法:new B().getClass().isInstance(a)
      

  2.   

    更变态的:try {
        B b = (B)a;
    } catch (ClassCastException e) {
        。
    }呵呵,开个玩笑,别真的这么搞哦。:P还是顶楼的好。
      

  3.   

    两种,一种是
    a instanceof B
    还有一种是
    B.class.isAssignableFrom(a.getClass())
    后一种应该更加常用些
      

  4.   

    都好像不对。
    用a instance of B, 那么B是超类,也返回正确isInstance(),就是intance of,所以仍然不对 boolean isAssignableFrom(Class<?> cls) 
              判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。 ,也不对
    这个应该可以吧,没有体验。if(a.getClass().getCanonicalName().equals(B.class.getCanonicalName())
    {
    //TRUE;
    }
      

  5.   

    如果B是A的超类,x是A的实例那么说x是B的实例也没有错啊,本来继承表达的就是“is a”关系,A是一种B嘛。他也没有说是要确定x确切地属于哪个类,只要判断是否是这个类的实例。要确定是属于哪个类也容易啊,用getClass().getName()就知道类名了class A{
        
    }class B extends A{
        
    }class Test{
        public static void main(String[] args){
            Object o=new B();
            System.out.println(o.getClass().getName());
        }
    }
      

  6.   

    Class1 a = new Class1();
    Class1 b = new Class1();if (a.GetType()==b.GetType())
    {
        MessageBox.Show("来自同的类");
    }
    else
    {
        MessageBox.Show("来自不同的类");
    }
      

  7.   

    if(a.class == b.class){
    //是
    }
      

  8.   

    if(a instanceof B)
    揭贴吧
      

  9.   

    Study~
    貌似有很多高手阿~
    这些细节问题我都没注意到~~
      

  10.   

    if (a instanceof B)
      ...