JavaEE之反射

简介: JavaEE之反射

 

1.反射

反射:Java语言中的一种机制,通过这种机制可以动态的实

1.类类

什么叫类类:如 小白 ,小黑 ,小红 ,Dog狗类 : 菲波 , 加菲,煤球 Cat猫来类 : 刘鑫 ,刘文,刘志 人类, 他们的是类可是他们分别是狗类,猫类,人类。。。。可是他们都是类类中的,类类就是java.reflect.Class类

1.1类类的获取方式

package zhanghao;


public class zhanghao { public static void main(String[] args) throws Exception { Student stu=new Student(); // 这个就是类类,应用在jdbc数据库链接中,自己导入的是什么数据库就是连接的是什么数据库


1.11 Class.forName

// 因为他继承了他底层的驱动 Class c1=Class.forName("zhanghao.Student"); System.out.println(c1);


1.12 类实例.getClass()

// 通用在增删改的方法上 Class c2 = stu.getClass(); System.out.println(c2);


1.13 类名.Class

// 通用查询的方法 Class c3=Student.class; System.out.println(c3); } }


2.反射实例

所以的实体类,添加了有参构造器,一定记得补一个无参构造器


// 一切反射都是从类类开始的


2.1.调用无参构造器反射实例化

Class c=Class.forName("zhanghao.Student");  Student s1= (Student) c.newInstance();  System.out.println(s1); // 有了有参构造器无参构造器就不存在了


2.2.调用有一个参数的构造器实例化;

// parameterTypes:代表了参数的类别 Constructor cr1= c.getConstructor(String.class); // 先拿到cr1构造器在实例化 Student s2= (Student) cr1.newInstance("zhanghao"); System.out.println(s2);


2.3.调用有2个参数的构造器实例化

Constructor cr2= c.getConstructor(String.class,String.class);  Student s3 = (Student) cr2.newInstance("s2001","nd");  System.out.println(s3);


2.4.调用私有的带了一个参数的构造器

// getConstructor这个方法只能获取到公有的构造器对象 Constructor cr3= c.getDeclaredConstructor(Integer.class); cr3.setAccessible(true); Student s4 = (Student) cr3.newInstance(19); System.out.println(s4);


3.反射方法的调用

3.1反射调用没有参数的方法 要先获取方法对象

// name:方法名 ; parameterTypes:调用这个方法要传的参数类型 Method m1=c.getMethod("hello"); // odj:;类实例; args:参数值 Object invoke = m1.invoke(stu); System.out.println(invoke);


3.2反射调用有参方法

Method m2=c.getMethod("hello",String.class);  Object invoke2 = m2.invoke(stu,"大帅哥");  System.out.println(invoke2);


3.3调用 有参数 私有的方法

Method m3=c.getDeclaredMethod("add",Integer.class,Integer.class); m3.setAccessible(true); Object invoke3 = m3.invoke(stu, 1,2); System.out.println(invoke3); }


4.反射读写属性

这个点会在增删改查的时候用


package zhanghao;


import java.lang.reflect.Field; import java.lang.reflect.Method;


public class zhanghao4 { public static void main(String[] args) throws Exception, Exception {


Class clz=Student.class;

Student stu=new Student("soo1","nb");

// 获取到学生的stu的sid值以及sname值 System.out.println(stu.getSid()); System.out.println(stu.getSname());


System.out.println("************************************");

Field sname = clz.getDeclaredField("sname");

sname.setAccessible(true);

sname.set(stu, "lx");

// Field:属性对象 Field[] fields= clz.getDeclaredFields(); for (Field f : fields) { f.setAccessible(true); System.out.println(f.getName()+":"+f.get(stu)); } /*这是固定代码 *req.getParameterMap *student s=new student() *for(Entry entry:map.entrySet()){ *string key=entry.getkey *string value =entry.getvalue * *Field snameField=clz.getDeclardField(key); *snameField.setAccessible(true); *snameField.set(s,value); *} */ } }


目录
相关文章
|
Java
JavaEE之反射(详解)2
JavaEE之反射(详解)2
54 0
|
24天前
|
IDE Java 编译器
java的反射与注解
java的反射与注解
14 0
|
5月前
|
Java 关系型数据库 MySQL
一文搞懂:【javaEE】反射
一文搞懂:【javaEE】反射
21 0
|
XML 安全 Java
【javaSE】 反射与反射的使用
【javaSE】 反射与反射的使用
|
JSON 安全 Java
java SpringAop 自定义注解 解析
java SpringAop 自定义注解 解析
|
6月前
|
安全 Java API
Java中的反射(通过反射获取类的结构、invoke方法、获取注解)
Java中的反射(通过反射获取类的结构、invoke方法、获取注解)
|
Java API 开发者
反射-JavaEE
反射-JavaEE
35 0
|
缓存 Java
java通过反射获取加了某个注解的所有的类
java通过反射获取加了某个注解的所有的类
|
Java 数据库连接 数据库
JavaEE之反射(详解)1
JavaEE之反射(详解)1
72 0