Reflection API(对象的类型)

时间:2014-03-11 13:31:02

标签: java reflection

如果对象名称在字符串中,并且我们不知道字符串中的内容,如何使用反射获取java中对象的类型?我想问一下,如果用户输入已经声明的对象名称,我该如何获得它的类型?

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

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

2 个答案:

答案 0 :(得分:0)

试试这个:

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();

答案 1 :(得分:0)

我认为这可能有所帮助:

object.getClass().getDeclaringClass();

来自java doc:

  

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