java web java的反射到底是有什么用处?怎么用?
java的反射到底是有什么用处?怎么用?
Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
可以不通过new关键字获取对象并且使用类对象中的成员变量,方法,修饰符等等,在这里举例获取类。
第一种:使用Class.forName(String classPath) ClassPath:写需要反射的类名,一般是以包名.类名。如:Class clazz = Class.forName("com.entity.Example")
第二种:直接使用Class clz = 类名.class
这种情况一般在我们知道有这个类的时候去使用。如:Class clz = Example.class
第三种:Class clz = 对象. getClass()
前提是对象已经被实例化出来了 。如:
Example ex = new Example()
Class clz = ex.getClass()
这三种方法都有各自的优点,一般我们使用第一种比较多,按照自己的实际需求去使用才是最好的。反射有啥用?有啥应用场景?
1.spring框架的ioc是基于java的反射机制。
2.JDBC 的数据库的连接注册驱动,获取连接也是基于Java反射。
3.Hibernate,Mybatis都有运用到反射。
Java中的反射,一般什么时候会用到?
做基础框架的时候会用得上,一般应用层面很少,不过这种东西,基本现在很多开源框架都已经给你封装好了,自己基本用不着写。典型的除了楼上讲的Hibernate之外,其实Spring也用到了。经典的就是xml或者properties里面写上了配置,然后在Java类里面解析xml或properties里面的内容,得到一个字符串,然后用反射,根据这个字符串获得某个类的实例,这样就可以动态配置一些东西,不用每一次都要在代码里面去new或者做其他的事情,以后要改的话直接改配置文件,代码维护起来就很方便了,同时有时候要适应某些需求,Java类里面不一定能直接调用另外的方法,这时候也可以通过反射机制来实现。总的来说,自己写的很少,具体什么时候要用那要看需求,楼上说得对,无非就是根据一个String来得到你要的实体对象,然后调用它原来的东西。但是如果是要自己写框架的话,那就会用得比较多了。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。