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):获得类指定的所有的构造方法



原文地址:https://www.cnblogs.com/CjtBlog/p/13542817.html