java中的反射
一、反射的概述
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。
而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.
1、创建实体类
1 public class User { 2 private int id; 3 private int age; 4 private String uname; 5 6 public User(int id, int age, String uname) { 7 super(); 8 this.id = id; 9 this.age = age; 10 this.uname = uname; 11 } 12 public User() { 13 super(); 14 // TODO Auto-generated constructor stub 15 } 16 public int getId() { 17 return id; 18 } 19 public void setId(int id) { 20 this.id = id; 21 } 22 public int getAge() { 23 return age; 24 } 25 public void setAge(int age) { 26 this.age = age; 27 } 28 public String getUname() { 29 return uname; 30 } 31 public void setUname(String uname) { 32 this.uname = uname; 33 } 34 35 @Override 36 public String toString() { 37 return "User [id=" + id + ", age=" + age + ", uname=" + uname + "]"; 38 } 39 40 }
2、测试java.lang.Class对象的获取方式
1 /** 2 * 各种不同的类型的class对象的获取 3 * 测试java.lang.Class对象的获取方式 4 * @author Zhang XiaoDao 5 * 6 */ 7 public class Demo01 { 8 public static void main(String[] args) { 9 String path = "com.zzp.bean.User"; 10 try { 11 //加载javaBean 12 Class clazz = Class.forName(path); 13 14 //对象是表示或封装一些数据,一个类被加载后(只能加载一次),jvm会创建一个对应该类的class对象, 15 //类的整个结构信息会放到对应的class对象中,这个class对象就像是一面镜子 16 //通过这面镜子,我们能看见对应类的全部信息 17 System.out.println(clazz); 18 //一个类只对应一个class对象,只被加载一次 19 Class clazz2 = Class.forName(path); 20 21 //通过.class和getClass()获取对象 22 Class clazz3 =User.class; 23 Class clazz4 = path.getClass(); 24 25 //通过.class也能获取基本数据类型 26 Class int1 = int.class; 27 28 //也能获取数组对象,一维数组arr01和arr02都是一样的,二维数组arr03与前面两个不同, 29 //数组的类型不一样,获取到的对象也不一样d与前面三个都不相同 30 int[] arr01 = new int[10]; 31 int[] arr02 = new int[30]; 32 int[][] arr03 = new int[10][20]; 33 double[] d = new double[10]; 34 35 } catch (ClassNotFoundException e) { 36 // TODO Auto-generated catch block 37 e.printStackTrace(); 38 } 39 } 40 }
原文地址:https://www.cnblogs.com/zhangzhipeng001/p/9119690.html
时间: 2024-12-13 10:48:05