zoukankan      html  css  js  c++  java
  • 1.反射机制

    1.什么是反射?
    就是正在运行,动态获取这个类的所有信息、
     
    2.反射机制的作用
    1.反编译: .class->.java
    2.通过反射机制访问java对象的属性,方法,构造器方法等。
     
     
    运用
     
    package com.jlong.classfrorm;
     
    import com.jlong.entity.User;
     
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
     
    public class ClassFrorm {
        public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
            Class<?> forName = Class.forName("com.jlong.entity.User");
          /*  Object o = aClass.newInstance();
            User user = (User) o;
            System.out.println(user.toString());*/
            //有参构造器初始化变量
          /*  Constructor<?> constructor = aClass.getConstructor(String.class);
            Object jlong = constructor.newInstance("jlong");
            User user = (User) jlong;
            String name = user.getUserName();
            System.out.println(name);*/
            // 使用反射实例化对象 无参数构造函数
            Object newInstance = forName.newInstance();
            // 获取当前类的 userId字段
            Field declaredField = forName.getDeclaredField("userName");
            // 允许操作私有成员
            declaredField.setAccessible(true);
            // 设置值
            declaredField.set(newInstance, "123");
            User user = (User) newInstance;
            System.out.println(user.getUserName());
     
     
        }
    }
     
     
    package com.jlong.entity;
     
    public class User {
        private String userName;
        private String userId;
        public User(){
     
        }
        public User(String userName){
            this.userName=userName;
        }
     
        public String getUserName() {
            return userName;
        }
     
        public void setUserName(String userName) {
            this.userName = userName;
        }
     
        public String getUserId() {
            return userId;
        }
     
        public void setUserId(String userId) {
            this.userId = userId;
        }
    }
     
     
  • 相关阅读:
    POJ 1659 Frogs' Neighborhood
    zoj 2913 Bus Pass(BFS)
    ZOJ 1008 Gnome Tetravex(DFS)
    POJ 1562 Oil Deposits (DFS)
    zoj 2165 Red and Black (DFs)poj 1979
    hdu 3954 Level up
    sgu 249 Matrix
    hdu 4417 Super Mario
    SPOJ (BNUOJ) LCM Sum
    hdu 2665 Kth number 划分树
  • 原文地址:https://www.cnblogs.com/goldlong/p/10966026.html
Copyright © 2011-2022 走看看