如果对象名称在字符串中,我们不知道字符串中是什么,我如何获得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。