• java的反射


    package com.tedu.day16;
    
    import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    /**
     * 反射student类,获取student类的class类
     */
    public class ReflectionStudent01 {
        public static void main(String[] args) throws Exception {
            // 获取class对象
            //方式1:通过student类的对象去调用getClass方法
            Class  clazz1 = new Student().getClass();
            // 方式二 通过类名.class
            Class<Student> clazz2 = Student.class;
            // 方式三通过class类中forName(类路径(包名.类名))方法
            Class  clazz3 = Class.forName("com.tedu.day16.Student");
            System.out.println(clazz1);
            System.out.println(clazz2);
            System.out.println(clazz3);
            //获取类的包名
            System.out.println("包名为:"+clazz1.getPackage().getName());
            //获取反射类的类名
            System.out.println("类名为:"+clazz1.getSimpleName());
            //获取反射类的全限定名(包名.类名)
            System.out.println("全限定名称为:"+clazz1.getName());
            System.out.println("==============================");
            //获取构造方法
            Constructor c1 = clazz1.getConstructor();
            System.out.println(c1);
            // 获取全参构造方法
            Constructor[] c2 = clazz1.getConstructors();
            for (Constructor con :
                    c2) {
                System.out.println(con);
            }
            // 获取属性
            Field name = clazz1.getDeclaredField("name");
            System.out.println(name);
            // 获取所有的成员变量
            Field[] dec = clazz1.getDeclaredFields();
            for (Field f :
                    dec) {
                System.out.println(f);
            }
            System.out.println("------------------------------------------");
            // 获取类的方法
            Method study = clazz1.getMethod("study", String.class);
            System.out.println(study);
            System.out.println("所有的方法==============================");
            Method[] methods = clazz1.getMethods();
            for (Method me :
                    methods) {
                System.out.println(me);
            }
            // 利用反射去获取到class对象(student类),并创建student对象
            System.out.println("获取对象=========================");
            Object o = clazz1.newInstance();
            System.out.println(o);
            System.out.println("创建student对象时调用全参构造");
            Constructor con = clazz1.getConstructor(String.class, int.class);
            // 通过带参构造去进行studnet对象创建
            Object o2 = con.newInstance("蔡恒", 30);
            System.out.println(o2);
            //想要获取student类中的set或者get,必须向下转型
            Student stu1 = (Student)o;
            stu1.setAge(29);
            stu1.setName("钱嘉菲");
            stu1.study("java");
        }
    }
    
  • 相关阅读:
    k8s学习笔记之五:Pod资源清单spec字段常用字段及含义
    k8s学习笔记之四:资源清单定义入门
    k8s学习笔记之三:k8s快速入门
    k8s学习笔记之一:kubernetes简介
    k8s学习笔记之二:使用kubeadm安装k8s集群
    centos7安装elasticsearch6.3.x集群并破解安装x-pack
    Centos6搭建sftp服务器
    底层互害模式,深契民心
    你不视我为子女,我凭什么视你为父母
    nodejs的桌面应用(electron)
  • 原文地址:https://www.cnblogs.com/ch2020/p/16874956.html
Copyright © 2020-2023  润新知