反射的知识点总结

jdbc: 
复习【

dao:  全称  Data Access Object  数据访问对象
 设计思想
写程序时 不会 直接去写代码,会 先分析 应用程序的 需求
根据需求 定义 接口(dao) ,主要体现的是 整个程序中的所有功能

com.oracle.dao       //接口
com.oracle.daoImpl  //接口的实现类
com.oracle.entity   //与数据库表对应的实体
com.oracle.tools    //工具类
com.oracle.test     //测试类

反射(reflect):  还没有用反射 封装 工具类;
 什么是反射 ? 
  反射 是程序在运行时 获取 类的能力的 过程 就是反射;  思想

将java 类 打成 jar包----->.class 文件 
 字节码形式体现的  ,如果是这样 如何 获取类的结构呢? 
 
 java中提供了 一种反射机制 来获取 类的结构:
   属性 ,方法, 构造器,静态块儿 ,实例块儿

Class c =  Class.forName("com.oracle.util.DBTools"); //获取 反射的一种方法
c.getName();
c.getSimpleName();

c.getField(String name); 获取 指定名字的 属性
c.getFields(); //获取类中的所有公有的属性
c.getDeclaredFields(); //获取类中的所有私有化属性

Field 类:
 getName(); //获取属性名
 getType(); //获取属性的类型;
 getModifiers();获取 当前属性的 访问修饰符 的值
 
拓展 Field的方法:
重点: 
赋值
set(Object obj, Object value); 给属性 重新赋值
取值
f.get(Object obj); 获取指定 属性的值

】



继续反射内容:
1. java中提供了三种 获取反射类Class的方式:
  1)Class.forName(""); 这个 不常用
  2)类名.class 关键字 ,这种常用
  3)创建类的对象 例如
    Person p= new Person();
  	p.getClass();//是 Object类的方法	   

2. 通过 反射 获取 类中的方法
Method m = c.getMethod(name, parameterTypes); 获取指定 方法
Method[]  m  = c.getDeclaredMethods(); 获取类中所有的方法

m.getName();获取方法的名字;
m.getReturnType(); 通过反射 获取方法的返回值类型
m.getParameterCount(); 通过反射 获取 方法参数的 个数
m.getParameterTypes(); 返回的是 Class[] 数组

超级无敌重点:
invoke(Object obj, Object... args); 这个 方法 就是通过 反射 来调用 类中的
  指定方法 ,其中 第一个参数是 对象,第二个参数是 方法的 实参
  
3.通过 反射来获取 类中的  构造器 
 c.getConstructor(类<?>... parameterTypes); 获取 指定参数的构造器   获取一个
 c.getConstructors(); 获取 类中的所有构造器 获取多个
 
重点: 
 newInstance(Object...parameterValue); 使用指定参数 的 构造器构建一个的实例化对象
  
  Person p =new Person(); 第一种创建对象的方式
  newInstance();这个方法  第二种 创建对象的方式
  
==========================================================================
总结反射 如下:
Class 类 就是反射类
 获取反射类的三种方式:
   1)Class.forName(""); 这个 不常用
  2)类名.class 关键字 ,这种常用
  3)创建类的对象 例如
    Person p= new Person();
  	p.getClass();//是 Object类的方法	   


这个类中 包含了 :
  1.属性 Field类
  	 --获取属性 的基本信息  的方法
  	 --给属性赋值, 和 取值的方法(重点);
  
  2.方法 Method类
     --获取方法 的基本信息  的方法
	 --执行、 调用方法的 方法  重点  invoke(Object obj,Object...objs);

常用方法:
  getName();获取 类的 全路径名
  getSimpleName();获取类 名字 不包括 包名
  getPackage(); 获取当前类所在的包
  c.getModifiers() 获取 访问修饰符
 
属性:
Field[] <----- c.getFields(); 获取 类中 所有 公共的 (public 修饰)的属性 
Field[] <----- c.getDeclaredFields(); 获取类中 所有 私有化 的属性
int	<------ c.field.getModifiers(); 可以获取 类中属性的访问修饰符 用数字代替
	 	    c.getType();


使用反射 、和 Field对象  结合以学过的知识点完成 对 插入的 sql 语句的 动态拼接

一下四个方法 必须会用: 
************************
newInstance(Object...parameterValue); //使用指定参数 的 构造器构建一个的实例化对象
set(Object obj, Object value); //给属性 重新赋值
get(Object obj);               //获取指定 属性的值
invoke(Object obj,Object...objs); //这个 方法 就是通过 反射 来调用 类中的指定方法 ,其中 第一个参数是 对象,第二个参数是 方法的 实参

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值