Java反射
来源:互联网 发布:冬天四件套绒淘宝 编辑:程序博客网 时间:2024/09/21 11:23
前言
- 最近在做代码混淆的时候,发现使用反射的地方混淆之后,会出错,这里,将反射相关的问题记录下。
反射案例。
- 所谓反射,就是在代码运行时动态获取类以及类的成员变量,通过一些例子来了解。
1.使用getClass来获取类。
public static void main(){Demo demo =new Demo(); System.out.println(demo.getClass().getName());}
上面的例子中,使用demo.getClass来动态获取类之后,可以通过getName()获取类的包名.
2.所有的类的对象都是Class对象的实例
package cax;class Demo{}public static void main(String [] args){ Class<?> demo1 =null; Class<?> demo2 =null; Classs<?> demo3 =null; demo1 = new Demo().getClass(); demo2 = Demo.class; demo3 = class.forName("cax.Demo")); System.out.println(demo1.getName());}
- 上面demo1,2,3的生成方式是三种类对象的获取方式,比较推荐的为demo3的生成方式,注意,这种方式需要类的全名,是包含包名的。
3.通过反射实例化对象
package cax;class Person{}demo = class.forName("cax.Person")Person pserson = (person)demo.newInstance();
- 这里需要指出的是,当一个类有多个构造函数时,编译后的构造函数的顺序和代码中的顺序并不保证完全一样。
- 其他的通过反射获取别的属性,方法,父类的方法等原理都是一样的,不再赘述。
4.获取类加载器的信息
demo = class.forName("cax.Demo");//得到类的字节码demo.getClassLoader();//得到类加载器的对象demo.getClassLoader().getClass()//再次通过反射,获取classLoader的类。demo.getClassLoader().getClass().getName();//获取classLoader的包名。
反射的使用场景
- 在使用工厂类的时候
- 最常见的是在获得jdbc驱动的时候。
- 使用泛型的时候
参考
http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
http://blog.csdn.net/ljphhj/article/details/12858767
阅读全文
0 0
- 【反射】JAVA反射机制
- JAVA 反射
- java 反射
- Java反射
- java反射
- java反射
- JAVA反射
- java 反射
- Java 反射
- java 反射
- Java反射
- java反射
- JAVA 反射
- java 反射
- Java反射
- java反射
- java 反射
- java 反射
- Hdu 4003 Find Metal Mineral 树型背包DP
- 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- 找规律 permutation
- UVA 442 栈解析表达式
- oracle(四)
- Java反射
- SQL ORDER BY 子句
- CodeForces
- POJ 2503 Babelfish(STL、二分、字典树、哈希)
- caffe源码追踪-net
- MP4全介绍
- idea开发中部署war和war exploded的区别
- 推荐两个安装Cygwin时的快速源
- OSPF特性和OSPF术语解释