反射

来源:互联网 发布:淘宝网上的海之蓝假酒 编辑:程序博客网 时间:2024/06/01 09:36
package com.zyf.day27_1.c_reflect;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import org.junit.Test;//反射技术public class App {//1、创建对象//@Test//public void testInfo() throws Exception{//Admin a = new Admin();////类全名//String className = "com.zyf.day27_1.c_reflect.Admin";////得到类字节码//Class<?> clazz = Class.forName(className);////创建对象////Admin admin = (Admin)clazz.newInstance();////创建对象2:通过构造器创建//Constructor<?> constructor = clazz.getDeclaredConstructor(String.class);//Admin admin = (Admin) constructor.newInstance("Bob");//}/*@Test//2、获取属性名或值public void testField() throws Exception{String  className = "com.zyf.day27_1.c_reflect.Admin";Class<?> clazz = Class.forName(className);Admin admin = (Admin) clazz.newInstance();//获取说有属性名称Field[] fs = clazz.getDeclaredFields();//遍历:输出每一个属性名称for(Field f : fs){//设置强制访问f.setAccessible(true);//名称String name = f.getName();//值Object value = f.get(admin);System.out.println(name + ": " +value);}}*/@Test//3、反射获取方法public void testMethod() throws Exception{String className =  "com.zyf.day27_1.c_reflect.Admin";Class<?> clazz = Class.forName(className);Admin admin = (Admin) clazz.newInstance();Method m = clazz.getDeclaredMethod("getId");//调用方法Object r_value = m.invoke(admin);System.out.println(r_value);}}package com.zyf.day27_1.c_reflect;public class Admin {    //Fieldprivate int id = 1000;    private String name = "大厦";        //Constructor    public Admin(){    System.out.println("Admin.Admin()");    }        public Admin(String name){    System.out.println("Admin.Admin()" + name);    }        //Methodpublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}    }

0 0
原创粉丝点击