• Java EKT关键技术强化 反射机制


     

    • 运行环境:

      JDK8 + IntelliJ IDEA 2018.3 


    • jar包链接:

    https://files.cnblogs.com/files/papercy/jsoup_jar%E5%8C%85.rar

    •  源码:

    package com.ChenJiangT.Work1;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Work1 {
        /**
         * @param args
         */
        public static void main(String[] args) {
            Class clz= List.class;
            System.out.println("***************List相关信息:***************");
            System.out.println("类名:"+clz.getName());
            System.out.println("包名:"+clz.getPackage());
            System.out.println("是否为接口:"+clz.isInterface());
            System.out.println("是否为基本类型:"+clz.isPrimitive());
            System.out.println("是否为数组:"+clz.isArray());
            System.out.println("获得父类的Class对象:"+clz.getSuperclass());
    
            clz=new ArrayList().getClass();
            System.out.println("***************List接口指向ArrayList时的相关信息:***************");
            System.out.println("类名:"+clz.getName());
            System.out.println("包名:"+clz.getPackage());
            System.out.println("是否为接口:"+clz.isInterface());
            System.out.println("是否为基本类型:"+clz.isPrimitive());
            System.out.println("是否为数组:"+clz.isArray());
            System.out.println("获得父类的Class对象:"+clz.getSuperclass());
        }
    }
    • 运行效果图:

    •  源码:

    package com.ChenJiangT.Work3;

    public class Work3 {
    public static void main(String[] args) throws ClassNotFoundException{
    Class clz;
    ClassLoader c1,c11;
    System.out.println("1---------------------------------------------");
    //得到系统类加载器
    c1=ClassLoader.getSystemClassLoader();
    System.out.println(c1);

    //输出其父加载器
    while (c1!=null){
    c11=c1;
    c1=c11.getParent();
    System.out.println(c11+"的父加载器是:"+c1);
    }

    System.out.println("2-----------------");
    clz=Class.forName("java.lang.Object");
    c1=clz.getClassLoader();
    System.out.println("加载Object类的类加载器是:" + c1);

    System.out.println("3-----------------");
    clz=Work3.class;
    c1=clz.getClassLoader();
    System.out.println("加载当前类的类加载器是:" + c1);
    }
    }
    • 效果图:

    • 总结:

        一.在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中:

            1). Class类:代表一个类。 Field 类:代表类的成员变量(成员变量也称为类的属性)。

            2).Method类:代表类的方法。 Modifier类:代表修饰符。

            3).Constructor 类:代表类的构造方法。

            4). Array类:提供了动态创建数组,以及访问数组的元素的静态方法。

        二.Class中的常用方法(获得类的构造方法)

            1).getConstructors():获得类的所有的public类型的构造方法。

            2).getDeclaredConstructors():获得类所有的构造方法   

            3)getConstructor(Class[] parameterTypes):获得类的特定public的构造方法,

            4).parameterTypes 参数指定构造方法的参数类型。

            5).getDeclaredConstructor(Class[] parameterTypes):获得类指定的所有的构造方法



  • 相关阅读:
    Oracle 的merge into 用法
    个人博客作业——结课总结
    个人博客作业week7
    结对项目总结博客
    #个人博客作业week3——微软必应词典的使用
    #个人博客作业week2——结对编程伙伴代码复审
    #个人博客作业week2——关于代码规范的个人观点
    #个人博客作业——目前流行的源程序版本管理软件和项目管理软件优缺点
    个人项目——四则运算题目的随机生成
    #个人博客作业Week1——浏览教材后提出的六个问题及软件与软件工程的提出。
  • 原文地址:https://www.cnblogs.com/CjtBlog/p/13542817.html
Copyright © 2020-2023  润新知