Class
所谓的Class对象就是Class文件在内存中的实例。
Class对象获取的三种方式
Entity entity = new Entity();
-
Class entityClass = Entity.class; //利用类
-
Class entityClass = entity.getClass();//利用对象
-
Class entityClass = Class.forName("com.onlyone.reflect.Entity");//利用类的全限定路径
利用 Class 创建对象
无参数
Entity entity = (Entity) entityClass.newInstance();
有参数
Entity entity = (Entity) entityClass.getConstructor(String.class).newInstance("小明");
私有
Constructor entityConstructor = entityClass.getDeclaredConstructor(String.class, int.class);
entityConstructor.setAccessible(true);
Entity entity = (Entity) entityConstructor.newInstance("小明", 20);
注意:
- 上面需要使用 int.class,而不是Integer.class
- getDeclaredxxx 可以获取该类自己包括私有在内的xxx,
- getxxx 只能获取public,不过可以获取包括其子类的xxx。
- 私有的访问前需要 setAccessible(true);
网友评论