Java基础(11)-反射-创新互联
能解决
Java中编译分为静态编译和动态编译。
静态编译:在编译时确定类型,绑定对象,即通过。
动态编译:运行时确定类型,绑定对象。动态编译大限度发挥了java的灵活性,体现了多态的应用,从而降低类之间的藕合性。
能得到
实现Java反射机制的类都位于java.lang.reflect包中:
1、Class类:代表一个类
2、Field类:类的属性(成员变量)
3、Method类:类的方法
4、Constructor类:代表类的构造方法
5、Array类:提供了动态创建数组,以及访问数组的元素的静态方法
- 对于修改静态常量类型是需要小心
对于基本类型的静态常量,JAVA在编译的时候就会把代码中对此常量中引用的地方替换成相应常量值
参考:https://www.cnblogs.com/yrstudy/p/6500982.html
https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html
使用步骤
第一步:Class c = Class.forName("className”);//className必须为全名,也就是得包含包名
Object obj=c.newInstance();//创建对象的实例
第二步:获取 Method:
3.1 如何获取 Method:
1). getDeclaredMethods得到 Method 的数组.
2). getDeclaredMethod(String methondName, Class ... parameterTypes)
3.2 如何调用 Method
1). 如果方法时 private 修饰的, 需要先调用 Method 的 setAccessible(true), 使其变为可访问
2). method.invoke(obj, Object ... args);
第三步:关于 Field:
4.1 如何获取 Field: getField(String fieldName)
4.2 如何获取 Field 的值:
1). setAccessible(true)
2). field.get(Object obj)
4.3 如何设置 Field 的值:
field.set(Obejct obj, Object val)
参考:https://www.cnblogs.com/tech-bird/p/3525336.html
各方案反射性能对比:https://www.cnblogs.com/zhishan/p/3195771.html
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻标题:Java基础(11)-反射-创新互联
文章网址:http://ybzwz.com/article/cocddj.html