| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> JSON技术和反射基础应用 -> 正文阅读 |
|
[Java知识库]JSON技术和反射基础应用 |
# JSON技术和反射 ## 1 JSON技术的基础使用 下方代码是利用JSON技术封装了一个JSON工具类,可将对象和JSON类型的字符串相互转换? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
## 2 ?反射 ### 2.1 获取字节码文件的三种方式 类加载器(ClassLoader) ? ? ?负责将类的字节码文件(.class文件)加载到内存中,并生成对应的class对象 Class对象? ? ? ? java.lang.Class类的对象,也叫字节码文件对象,每个Class对象对应一个字节码文件 **获取Class对象的三种方式** · Object类的getClass()方法 ? ? ? `Class clazz = 对象名.getClass();` · 类的静态属性 ? ? ? `Class clazz = 类名.class;` · Class类的静态方法 ? ? ?`Class clazz = Class.forName("正名");` ? ? ? //正名:包名+类名 ?例:cn.itcast.demo01.Student ### 2.2 反射方式获取构造方法并使用 **Constructor<T>对象** 构造器对象,属于java.base模块,java.lang.reflect包 **通过Class对象获取构造器对象** ·getConstructor(Class<?>...parameterTypes) ? ? ? ? 返回一个Constructor对象,仅公共构造函数 ? ? ? ? ?Class<?>...:可变参数,代表Class类型的数组 ? ? ? ? ? ?:通配符,代表不确定的任意类型
·getDeclaredConstructor(Class<?>...parameterTypes) ? ? ? 返回一个Constructor对象,可获取私有构造函数 ? ? ? ?//操作方法与上述代码类似 ·getConstructors() ? ? ? 返回此类的所有(不含私有)构造函数的数组 ? ? ? ?//操作与上述类似 **Construct类的常用方法** ·String getName() ? ? ? ?//返回构造函数名 ·T newInstance(Object...initargs) ? ? ? //使用此构造函数和指定参数创建并初始化对象 ### 2.3 反射方式获取成员方法并使用 **Method对象** 方法对象和构造器对象属于同一模块,同一包下 **通过Class对象获取方法** ·getMethod(String name,Class<?>...parameterTypes) ? ? ?返回一个Method对象,仅公共成员方法 ? ? ? name:方法名 ? ? ? parameterTypes:方法的参数列表
·getDeclaredMethod(String,Class<?>...)? ? ? ? 返回一个Method对象,可获取私有方法 ·getMethods() ? ? ? ?返回此类私有(不含私有)方法的数组 **Method的常用方法** ·String getName() ? ? ?//返回方法名 ·Object invoke(Object obj,Object...args) ? ? ?//在指定对象上调用此方法,参数为args ### 2.4 反射方式获取成员变量并使用 **Field对象** 域(成员变量、属性)对象,属于java.base模块,java.lang.reflect包 **通过Class对象获取属性** ·getField(String name) ? ?返回一个Filed对象,仅公共属性 ? ? ?name:属性名 ·getDeclaredField(String name)? ? ? ?返回一个Field对象,可获取私有属性
·getFields() ? ? ? 返回此类所有(不含私有)属性的数组 **Field的常用方法** ·void set(Object obj,Object value) ? ? ?//设置obj对象的指定属性值value ·void setAccessble(boolean flag) ? ?//将此属性的可访问性设置为指定布尔值(即暴力反射) ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:17:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |