java反射

来源:互联网 发布:创业软件 俞青 编辑:程序博客网 时间:2024/06/18 08:58

看百度说以后学web框架才用得到,现在也不理解这东西到底能干嘛,跟着别人敲了点代码。先预习

package com.cyh.test1;import java.io.File;import java.io.FileInputStream;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Scanner;class Book{    public int value;    public String name;    private boolean bo;    public Book(){        System.out.println("构造");    }    public void fun1(){        System.out.println("公共方法");    }    private void fun2(){        System.out.println("私有方法");    }    public String toString(){        return this.value + this.name + this.bo;    }}public class Demo3 {    public static void main(String[] args) throws Exception{        Book book = new Book();        //获取到类名称        Class c1 = book.getClass();        Class c2 = Book.class;        Class c3 = Class.forName("com.cyh.test1.Book");        System.out.println(c1);        System.out.println(c2);        System.out.println(c3);        //获取到公共字段 (Filed类表示类中的一个字段)        Field[] field = c1.getFields();        for (Field f : field){            System.out.println("公共字段"+f.getName());        }        //获取到所有的字段        field = c1.getDeclaredFields();        for (Field f : field){            System.out.println("所有字段:"+f.getName());        }        //获取类中公共方法, 有继承的方法        Method[] me = c1.getMethods();        for (Method m : me){            System.out.println("公共方法"+m.getName());        }        //获取类中的所有方法, 但不包括继承的方法        me = c1.getDeclaredMethods();        for (Method m : me){            System.out.println("类中所有方法"+m.getName());        }        //通过属性给指定的对象设置值            //通过类创建一个对象        Object obj = c1.newInstance();        field[0].set(obj, 30);        field[1].set(obj, "三国");        //field[2].setBoolean(obj, true); 因为该字段不可见,所以无法设置属性值        //输出c1对象        System.out.println(obj.toString());    }}

这三个返回的都是同一个Class对象

    Class c1 = book.getClass();    Class c2 = Book.class;    Class c3 = Class.forName("com.cyh.test1.Book");

得到这个Class就可以通过newInstance()方法创建一个Class的对象,有了这个对象还需要两个重要的类Field和Method获取类中的属性和方法

原创粉丝点击