栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

反射做通用框架

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

反射做通用框架

反射概述

l 反射是指对于任何一个 Class 类,在"运行的时候"都可以直接得到这个类全部成分。 l 在运行时,可以直接得到这个类的构造器对象 : Constructor l 在运行时,可以直接得到这个类的成员变量对象 : Field l 在运行时,可以直接得到这个类的成员方法对象 : Method l 这种运行时动态获取类信息以及动态调用类中成分的能力称为 Java 语言的反射机制。 1. 反射的作用? l 可以在运行时得到一个类的全部成分然后操作。 l 可以破坏封装性。(很突出) l 也可以破坏泛型的约束性。(很突出) l 更重要的用途是适合:做Java高级框架 l 基本上主流框架都会基于反射设计一些通用技术功能。

反射的关键:

l 反射的第一步都是先得到编译后的 Class 类对象, 然后 就 可以得到 Class 的全部成分。 推荐3种方式 forName   类名.class    对象.getClass l 方式一: Class c1 = Class.forName (“ 全类名 ”); l 方式二: Class c2 = 类名 .class l 方式三: Class c3 = 对象 . getClass (); l 反射的第一步是先得到类对象,然后从类对象中获取类的成分对象。 l Class 类中用于获取构造器的方法

Constructor[] getConstructors​()

返回所有构造器对象的数组(只能拿public的)

Constructor[] getDeclaredConstructors​()

返回所有构造器对象的数组,存在就能拿到

Constructor getConstructor​(Class... parameterTypes)

返回单个构造器对象(只能拿public的)

Constructor getDeclaredConstructor​(Class... parameterTypes)

返回单个构造器对象,存在就能拿到

使用反射技术获取成员变量对象并使用

Field[] getFields​()

返回所有成员变量对象的数组(只能拿public的)

Field[] getDeclaredFields​()

返回所有成员变量对象的数组,存在就能拿到

Field getField​(String name)

返回单个成员变量对象(只能拿public的)

Field getDeclaredField​(String name)

返回单个成员变量对象,存在就能拿到

反射的作用-绕过编译阶段为集合添加数据

反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以为集合存入其他任意类型的元素

ArrayList list = new ArrayList<>();
list.add(100);
list.add(99);

泛型只是在编译阶段可以约束集合只能操作某种数据类型,在 编译成 Class 文件进入运行阶段 的时候,其真实类型都是 ArrayList 了,泛型相当于被擦除了。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号