java反射
来源:互联网 发布:网络摄像机多少钱 编辑:程序博客网 时间:2024/06/13 16:49
package test;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;//注意:私有与公有的(构造器、属性、方法)//Declared//Field f = c3.getField("name");//只能获取公有属性//Field f = c3.getDeclaredField("name");//能获取所有属性public class Test1 {public static void main(String[] args) throws Exception {//1.Object类的getClass()方法Person p1 = new Person();Class c11 = p1.getClass();Person p2 = new Person();Class c12 = p2.getClass();//2.数据类型的静态属性Class c2 = Person.class;//3.Class类中的静态方法//开发一般使用第三种,因为第三种是一个字符串,文不是一个具体的类型,这样就可以把字符串配置到配置文件中(反射一般和配置文件配合使用)Class c3 = Class.forName("test.Person");//注意:字符串为全路径类名(即含包名)System.out.println(c11==c12);//trueSystem.out.println(c11==c2);//trueSystem.out.println(c11==c3);//trueSystem.out.println(c2==c3);//true//反射获取构造方法Constructor ccc = c3.getConstructor();//获得无参构造方法对象//相当于Person obj = new Person();Object obj = ccc.newInstance();System.out.println(obj);//Person [name=null, age=0, address=null]Constructor ccc2 = c3.getConstructor(String.class,int.class,String.class);//获得带参构造方法对象//相当于Person obj2 = new Person("aaa",18,"北京");Object obj2 = ccc2.newInstance("aaa",18,"北京");//System.out.println(obj2);//Person [name=aaa, age=18, address=北京]//反射获取属性Field f = c3.getDeclaredField("name");//私有属性需设置true---取消访问检查f.setAccessible(true);//需要指定这个属性所属的对象---这里为:反射获取无参构造器对象的实例objf.set(obj, "北京");System.out.println(obj);//Person [name=北京, age=0, address=null]//反射获取方法Method m = c3.getMethod("show2", String.class);//第一个参数为方法名 第二个参数为该方法传入的参数Object s = m.invoke(obj, "Hello World");//第一个参数为所属对象 第二个参数为该方法传入的参数System.out.println(s);//Hello World}}class Person{private String name;int age;public String address;public Person(){System.out.println("No args Construstor");}public Person(String name, int age, String address) {super();this.name = name;this.age = age;this.address = address;System.out.println("args Construstor");}public void show1(){System.out.println("Show args");}public String show2(String args){return args;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";}}
阅读全文
0 0
- 【反射】JAVA反射机制
- JAVA 反射
- java 反射
- Java反射
- java反射
- java反射
- JAVA反射
- java 反射
- Java 反射
- java 反射
- Java反射
- java反射
- JAVA 反射
- java 反射
- Java反射
- java反射
- java 反射
- java 反射
- SQL Server 对比两个数据库的索引
- Oracle迅速取到一个表的所有列的列名的方法
- 解析Android Studio 2.2 Native新特性
- Log日志类的静态成员需类外初始化
- java中的代理
- java反射
- Vim命令
- mt6735[AT Command] Modem 支持哪些AT Command?参数含义在哪查看?
- $.ajax()方法参数详解
- MySql之INSERT INTO…ON DUPLICATE KEY UPDATE详解
- string截取字符串
- PAT
- 对于机器学习,到底该选择哪种编程语言
- oracle 数据库 查询表明修改的状态