将类作为参数传递给java中的方法

我正在编写一个方法,我想将一个类传递给一个方法,其中一部分代码包括检查对象是否属于某种类型。 这就是我想要的(但显然不起作用):

private static class MyClass1 { /***/ } private static class MyClass2 { /***/ } private void someFunc() { /* some code */ methodName(MyClass1); methodName(MyClass2); } private void methodName(Class myClass) { Object obj; /* Complicated code to find obj in datastructure */ if (obj instanceof myClass) { /* Do stuff */ } } 

有关如何做到这一点的任何提示? 谢谢!

Class有一个isInstance()方法和一个isAssignableFrom()方法来检查这样的东西。 最接近您要找的是:

 if (myClass.isInstance(obj)) { 

更新:从您的评论中,您希望将类的名称传递给方法,并检查是否可以将某些内容分配给该类。 唯一的方法是将类名作为String传递,然后加载该类并使用上述方法之一。 例如(省略exception处理):

 private void methodName(String className) { Class myClass = Class.forName(className);  Object obj;  /* Complicated code to find obj in datastructure */  if (myClass.isInstance(obj)) {    /* Do stuff */  } } 

我想你想在运行时知道对象的类类型。所以使用reflaction api。 对于你的问题这个解决方案,我认为工作

 public class Clazz { public static void main(String[] args) { Clazz clazz = new Clazz(); ArrayList list = new ArrayList<>(); Class myClass = list.getClass(); clazz.display(myClass); } /** * Modified By nirav.modi on Feb 13, 2013 */ private void display(Class myClass) { ArrayList list = new ArrayList<>(); if(myClass.isInstance(list)) { System.out.println("Yooo , its instance.."); }else { System.out.println("Not instance"); } } 

}

 MyClass1 myClass1 = new MyClass1(); if(MyClass1.class.isInstance(myClass1)) System.out.println("(MyClass1.class.isInstance(myClass1) is TRUE"); else System.out.println("(MyClass1.class.isInstance(myClass1) is FALSE"); Object myClass2 = new MyClass2(); Class class1 = myClass1.getClass(); Class class2 = myClass2.getClass(); System.out.println("class1 == class2 : " + ( class1 == class2)); System.out.println("class1.isAssignableFrom(class2) = " + class1.isAssignableFrom(class2)); MyClass1 myClass3 = new MyClass1(); Class class3 = myClass3.getClass(); System.out.println("class1 == class3 : " + ( class1 == class3)); System.out.println("class1.isAssignableFrom(class3) = " + class1.isAssignableFrom(class3)); OUPUT: (MyClass1.class.isInstance(myClass1) is TRUE class1 == class2 : false class1.isAssignableFrom(class2) = false class1 == class3 : true class1.isAssignableFrom(class3) = true