2013-03-13 128 views
0

这可能是一个愚蠢的问题,但我必须知道是否有办法将对象的实例发送给方法?Java将instanceof作为参数

像这样:

public class TestClass 
    { 
     public TestClass() 
     { 
      //Initialize 
     } 
    } 

    public class AnotherClass 
    { 
     Instance!? mInstance; 

     public AnotherClass(Instance!? instance) 
     { 
      mInstance = instance; 
     } 

     public boolean isInstanceOfTestClass() 
     { 
      return mInstance == TestClass; 
     } 
    } 

    public class Main 
    { 
     public static void main(String[] args) 
     { 
      AnotherClass a = new AnotherClass(TestClass); 

      if(a.isInstanceOfTestClass) 
       System.out.println("lala"); 
     } 
    } 

(试图使它包装成码块)

+0

我很难理解这一点。对象是类的实例。 “Instance!?”是什么意思? – Nick 2013-03-13 19:34:43

+1

也许你想使用类的'.class'属性?不知道你想做什么很难说。 – rm5248 2013-03-13 19:35:48

回答

3

有没有这样的事,作为一个“对象的实例”。一个对象是一个类的实例 - 所以“实例”和“对象”指的是同一件事情。

可以使用instanceof运算符来测试,如果任意对象是特定的类的实例:

if (a instanceof AnotherClass) { 
    // ... 
} 

还有类java.lang.Class,它代表了一个对象的类。您可以通过对象调用getClass()得到它:

Class<?> cls = a.getClass(); 

java.lang.Class API文档。

+0

“Class”中你想要的特定方法是“isAssignableFrom”,它是instanceof的动态版本。 – 2013-03-13 19:50:37

+0

如果我有一个父类敌人和一个继承敌人的孩子类僵尸。那我该怎么做类 mEnemyClass并指定mEnemyClass = Zombie.class? – Rasmus 2013-03-13 19:57:59

+0

'Class <?扩展敌人> mEnemyClass = Zombie.class;' – Jesper 2013-03-14 07:41:52

0

那么你可以使用Class.isAssignableFrom并用Class的实例构造,其中T是你想要测试的类。

但是,如果您对执行打字和制作非类型特定课程感到困扰,我建议您阅读泛型。