Java是门面向对象的语言,其中的每一个对象都有与之对应的的Class。只要一提到Class,自然就想到Java的反射机制,可见反射在Java中的重要性。
Class的获取
类名.class
1 | Class cls = User.class; |
对象.getClass()
1 | Class cls = user.getClass(); |
Class.forName()
1 | //注意这里的参数是类的全限定名(即含有包名) |
ClassLoader
1 | Class cls = classLoader.findClass("com.reflect.User"); |
创建对象
通过Class创建公有的无参构造方法
1 | Class<User> cls = User.class; |
通过Constructor创建公有的无参构造方法
1 | Class<User> cls = User.class; |
通过Constructor创建私有的无参构造方法
1 | Class<User> cls = User.class; |
通过Constructor创建私有的含参构造方法
1 | Class<User> cls = User.class; |
读写对象属性
1 | public class User { |
静态属性
1 | Class<User> cls = User.class; |
成员属性
1 | Class<User> cls = User.class; |
私有成员属性
1 | Field sexField = cls.getDeclaredField("sex"); |
调用对象方法
1 | public class User { |
静态方法
1 | Class<User> cls = User.class; |
1 | 后台输出: |
成员方法
1 | User user = new User(); |
1 | 后台输出: |
反射的简单应用
1 | 上面我们对于反射中一些常用的Api进行了基本的认识,接下来我们进入一个简单的实战练习,案例驱动,以加深对反射的认识。 |
1 | //1. 获取user对象对应的Class |
1 | 后台输出: |