• Java的反射机制一


    Java具有一定的动态性,我们可以利用反射机制,字节码操作来获得类似动态语言的特性。
    动态操作对象,构造方法,属性,方法
    Demo2
    如何取得属性和方法以及构造器
    public class Demo2
    {
    public static void main()
    {
    String path = “class.jeeleaning.servlet.User”;
    Class clazz = Class.forName(path);
    //获取属性
    Field[] fields = clazz.getDeclaredFields();
    Field f = clazz.getDeclaredField("uname);
    //获取方法
    Method[] methods = clazz.getDeclaredMethods();
    Method m =clazz.getDeclaredMethod(“getUname”,对应参数的类对象 :null,或Strin.class);
    //构造器
    Constructor[] constructors = clazz.getConstructors();
    Construct c1 = clazz.getConstructor(对应参数的类对象和获取方法类似);

    Demo3
    通过反射API动态操作,属性,方法,构造器
    public class Demo3
    {
    public static void main(String[] args)
    {
    Class clazz = class.forName(path);
    //通过反射API调用构造方法,构造对象;
    User u1 = clazz.newInstance();//调用无参数的构造器
    //注意javabean中运用反射机制时,都需要定义一个无参数的构造器
    Construct c = clazz.getDeclaredConstruct(String.class,int.class)
    c.newInstance(“linminhao”,2);
    //通过API调用方法
    Method method = clazz.getDeclaredMethod(“setName”,String.class);
    method.invoke(u1,“高企三”);
    //通过API调用属性
    Field f= clazz.getDeclaredField(“uname”);
    f.set(u1,“高企四”);

  • 相关阅读:
    Java IO: InputStreamReader和OutputStreamWriter
    Java IO: 序列化与ObjectInputStream、ObjectOutputStream
    Java IO: Buffered和Data
    [Codeforces Round #613 (Div. 2)]
    [算进] 巴士
    [算进] 小木棍
    [算进] 数据备份
    [算进] 双端队列 题解
    [算进] 蚯蚓 题解
    [算进] 赶牛入圈 题解
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12780052.html
Copyright © 2020-2023  润新知