java反射api(对象的类型)

slhcrj9b  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(353)

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

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

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

oogrdqng

oogrdqng1#

试试这个:

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

c8ib6hqw2#

我想这会有帮助:

object.getClass().getDeclaringClass();

来自java文档:
如果此类对象表示的类或接口是另一个类的成员,则返回表示声明它的类的类对象。如果此类或接口不是任何其他类的成员,则此方法返回null。如果该类对象表示数组类、基元类型或void,则该方法返回null。

相关问题