java基础——反射基础知识
来源:互联网 发布:淘宝怎么手机实名认证 编辑:程序博客网 时间:2024/05/17 21:05
动态代理在项目中应用的比较多,动态代理是依靠反射技术来实现的,今天就来系统的学习一下反射。
java中提供的反射机制是说在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。
java反射的主要实现类:
java.lang.Class:表示正在运行的java应用程序中的类和接口,提供得到Construtor、Field、Method的方法。
java.lang.reflect.Constructor:提供关于类的单个构造方法的信息以及对它的访问权限。
java.lang.reflect.Field:提供关于类或接口的属性信息,以及对它的动态访问权限。
java.lang.reflect.Method:提供关于类或接口中某个方法的信息。
下面通过代码来学习:
//获取Class类对象Class class1 = Person.class;Class class2 = Class.forName("com.ls.Person");Person person = new Person();Class class3 = person.getClass();
//创建对象实例Person person = (Person)Class.forName("com.ls.Person").newInstance();
//获取属性//返回此 Class 对象表示的类或接口的所有可访问公共字段Field[] fields = Class.forName("com.ls.Person").getFields();//返回 Class 对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段Field[] fields2 = Class.forName("com.ls.Person").getDeclaredFields();//返回 Class 对象所表示的类或接口的指定已声明字段Field field3 = Class.forName("com.ls.Person").getDeclaredField("age");//返回Class 对象所表示的类或接口的指定公共成员字段Field field4 = Class.forName("com.ls.Person").getField("name");for (int i = 0; i < fields.length; i++) {System.out.println(fields[i].getName());}for (int i = 0; i < fields2.length; i++) {System.out.println(fields2[i].getName());}//启用和禁用访问安全检查的开关。默认为false。值为 true表示反射的对象在使用时应该取消 Java 语言访问检查field3.setAccessible(true);System.out.println(field3.get(person));System.out.println(field4.get(person));
//获取方法Method method = Class.forName("com.ls.Person").getMethod("getName", null);Method method2 = Class.forName("com.ls.Person").getMethod("setName", String.class);System.out.println(method.invoke(Class.forName("com.ls.Person").newInstance(), null));System.out.println(method2.invoke(Class.forName("com.ls.Person").newInstance(), "柳松"));
class Person {public String name = "ls";private String age = "18";public Person(){}public Person(String name,String age){this.name = name;this.age = age;}public String getName() {return name;}public String setName(String name) {return name;}}综上,可以理解为反射就是把java类中的各种成分映射成相应的java类,即一个类以及类中的变量、方法、构造函数、包等信息,都可以当成一个对象来处理,分别对应jdk中相应的类:Class、Field、Method、Construction、Package等。
0 0
- java基础——反射基础知识
- Java基础—反射
- java基础知识—Java中的反射机制
- Java基础知识——反射机制
- Java基础知识之——反射
- java基础——反射
- java基础——反射
- java基础——反射
- java基础——反射
- Java基础——反射
- Java基础——反射
- java基础——反射
- java反射——基础
- java基础——反射
- Java基础——反射
- Java——反射基础
- Java基础—反射机制
- Java反射—基础篇
- 欢迎使用CSDN-markdown编辑器
- windows安装centos7双系统后丢失windows启动项的简单解决方法
- reinstall-fedora-note.txt
- 查询优化
- mui与后台的交互
- java基础——反射基础知识
- Oracle:PL/SQL--流程控制(三)——循环结构:loop、while-loop、for-loop
- 计算字符串的相似度-两种解法
- codeforces round 369div2 C Coloring Trees
- css中淘宝网的更多三角制作
- Linux Find 命令总结
- poj 1953 World Cup Noise(DP)
- Spring 学习笔记(二)
- Mysql学习第二课