反射API(对象的类型)



如果对象名称在字符串中,我们不知道字符串中是什么,我如何获得java中使用反射的对象类型?我想问的是,如果user输入了一个已经声明过的对象名,我如何获得它的类型?

Person per = new Person("umer", 12);
            br = new BufferedReader(new InputStreamReader(System.in));
            String str = br.readLine();

如果用户输入per,我想获得类的名称,即person..我该怎么办?

试试这个:

Class myClass = Class.forName("my.class.from.String");

编辑

为了能够通过名称访问类,您必须将它们粘贴到Map中:

Map<String, Person> myPersons = new HashMap<String, Person>();
myPersons.add("umer", new Person("umer", 12));
myPersons.add("cedb", new Person("cedb", 13));
String myName = //Capture user input here
String myClassName = myPersons.get(myName).getClass().getCannonicalName();

我想这可能会有帮助:

object.getClass().getDeclaringClass();

from Java doc:

如果这个class对象表示的类或接口是另一个类的成员,则返回表示声明它的类的class对象。如果此类或接口不是任何其他类的成员,则此方法返回null。如果此Class对象表示数组类、基本类型或void,则此方法返回null。

相关内容

  • 没有找到相关文章

最新更新