java上乘武功入门??反射
java上乘武功入门??反射,博智网带你了解详细信息 。
目录
- 先来看一段魔法吧
- 反射机制是个什么玩意儿?
- 构造任意一个类的对象
- 了解任意一个对象所属的类
- 了解任意一个类的成员变量和方法
- 调用任意一个对象的属性和方法
- 魔法揭秘
- 总结
先来看一段魔法吧public class Test {private static void changeStrValue(String str, char[] value) {// 只要执行魔法代码就可以达到下面的效果// 施展魔法的代码稍后揭秘}public static void main(String[] args) {changeStrValue("abc", new char[]{'d','e','f'});String abc = "abc";System.out.println("abc");System.out.println(abc);System.out.println("abc".equals(abc));}}

文章插图

文章插图

文章插图

文章插图

文章插图
【java上乘武功入门??反射】
魔法揭秘是时候揭秘魔法的真面目了 , 没错 , 也是利用了反射 。
import java.lang.reflect.Field;public class Test {/*** 修改字符串内部的值* @author 二当家的白帽子 https://le-yi.blog.csdn.net/* @param str* @param value*/private static void changeStrValue(String str, char[] value) {try {Field f = str.getClass().getDeclaredField("value");f.setAccessible(true);f.set(str, value);} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {changeStrValue("abc", new char[]{'d','e','f'});// 这里的"abc"字符串和上面调用changeStrValue的参数"abc"会指向同一块内存String abc = "abc";System.out.println("abc");System.out.println(abc);System.out.println("abc".equals(abc));}}
要理解这段代码 , 除了反射机制还需要了解java对于字符串的处理 。"字符串常量池"已经超出本文的范围 , 是另一个话题 , 本文就不多说了 。
原本字符串内容是"abc" , 我们正常情况下无法修改这个内容 , 因为String是不变类 。但是反射大法却可以打破一切禁忌 。
总结一般的程序可能用不到写反射的代码 。但是像spring这样的框架 , 如果没有反射 , 我真的想不出如何实现呢 。哪怕永远不需要用反射 , 了解机制对我们都有着莫大的好处 。
本篇文章就到这里了 , 希望能给你带来帮助 , 也希望您能够多多关注趣讯吧的更多内容!
- 羊狮幕和武功山是一个地方吗
- 电视剧中古三通传武功给成是非是哪一集
- Day10基础不牢地动山摇?Java基础
- Java多态性抽象类与接口细致详解
- 武功山可以自己带帐篷上去吗
- Structs框架原理案例详解 Java
- Java基础之匿名内部类、包装类
- 浅谈Java包装类型Long的==操作引发的低级bug
- 后期杨过的武功高于黄药师吗
- 武功山在哪个城市
