如果对象名称在字符串中,并且我们不知道字符串中的内容,如何使用反射获取java中对象的类型?我想问一下,如果用户输入已经声明的对象名称,我该如何获得它的类型?
Person per = new Person("umer", 12);
br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
如果用户输入per,我想获得该类的名称,即人... 我该怎么办?
答案 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。