java,
分享于 点击 14900 次 点评:52
java,
所起java反射,我们知道应用最多的是spring和hibernate的声明式事务的管理。spring中通过AOP来控制对象的创建和销毁。所起反射首先要提起的就是Class对象,他是类的字节码,里面包含了类的签名,方法,域等必要的信息。Class对象的获取有三种方式:
//获取Class对象的三种方式
Class clazzOne = Student.class;
Class clazzTwo = Class.forName("com.gao.test.reflectTest.Student");
Student student = new Student();
Class clazzThree = student.getClass();
Class对象创建完成后首先我们来看看通过反射构造对象的两种方式:
1.通过Class.newInstance()来调用类的无参构造器来构造对象:
//通过调用类的无参构造器来创建对象,
//如果你把Student的无参构造器设置成了private则会抛出异常
//如果你任然想要通过调用private构造器来构造对象,则应该用第二种方法
Object first = clazzOne.newInstance();
2.通过constructor的方式来构造对象
//如果想调用构造器的是无参的且是public的修饰符,则可以通过以下方式构造对象
Constructor constructor = clazzOne.getConstructor(null);//null表示它是一个无参的构造器,
Object second = constructor.newInstance(null);//不接受任何参数
//如果构造器是非public的无参构造器
Constructor constructorTwo = clazzOne.getDeclaredConstructor(null);
if(!constructorTwo.isAccessible()){
constructorTwo.setAccessible(true);
}
Object third = constructorTwo.newInstance(null);
constructorTwo.setAccessible(false);
//如果是通过构造器是有参数的,public构造器来构造对象
Constructor constructorThree = clazzOne.getConstructor(/**这里是构造器的参数对应class比如:<code>String.class,String[].class</code>*/);
Object fourth = constructorThree.newInstance(/**这里是传入的参数,具体的值 */);
相关文章
- 暂无相关文章
用户点评