zoukankan      html  css  js  c++  java
  • Java反射机制由哪些类实现?

    • 运行环境:

      JDK8 + IntelliJ IDEA 2018.3 


    • 源码: 

      package com.ChenJiangT.Demo2;
      
      import java.lang.reflect.Constructor;
      import java.lang.reflect.Field;
      import java.lang.reflect.Method;
      import java.util.Arrays;
      
      public class Demo2 {
          public static void main(String[] args) {
             /* Field 类:代表类的成员变量(成员变量也称为类的属性)。
      
              Method类:代表类的方法。
      
              Modifier类:代表修饰符。
      
              Constructor 类:代表类的构造方法。*/
              Student student = new Student();
              Class claStu=student.getClass();
      
              Field cla1=null;
              try {
                  cla1=claStu.getDeclaredField("name");
              } catch (NoSuchFieldException e) {
                  e.printStackTrace();
              }
              System.out.println(cla1);
      
               Field[] cla2=claStu.getDeclaredFields();
              System.out.println(Arrays.toString(cla2));
      
              System.out.println("********************************************************************************************");
      
              //Method类:
              Method clazMe=null;
              try {
                   clazMe=claStu.getMethod("aa",String.class);//查找方法名是getName 并且c
              } catch (NoSuchMethodException e) {
                  e.printStackTrace();
              }
              System.out.println(clazMe);
      
              Method[] clazMe2=claStu.getMethods(); //查找此类的所有公共的方法  包含父类的继承来的方法
              System.out.println(Arrays.toString(clazMe2));
      
              Method[] clazMe4 = claStu.getDeclaredMethods();//查找此类的所有的方法  不包含父类的继承来的方法
              System.out.println(Arrays.toString(clazMe4));
      
              System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
      
              //Modifier类  getModifiers
              int claMod=claStu.getModifiers();
              System.out.println(claMod);
      
      
              //Constructor 类:代表类的构造方法   getConstructor  getConstructors  getDeclaredConstructors
              Constructor claCon1=null;
              try {
                   claCon1 = claStu.getConstructor(String.class);//查找参数是String 的构造方法
              } catch (NoSuchMethodException e) {
                  e.printStackTrace();
              }
              System.out.println(claCon1);
              Constructor[] claCon2 = claStu.getConstructors();//查找此类的所有的构造方法
              System.out.println(Arrays.toString(claCon2));
      
              Constructor[] claCon3 = claStu.getDeclaredConstructors();//查找此类的所有的声明的构造方法
              System.out.println(Arrays.toString(claCon3));
      
          }
      }
    • 效果图:

     

    总结:

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

          1).Class类:代表一个类。

          2).Field 类:代表类的成员变量(成员变量也称为类的属性)。

          3).Method类:代表类的方法。

          4).Modifier类:代表修饰符。

          5).lConstructor 类:代表类的构造方法。

          6).Array类:提供了动态创建数组,以及访问数组的元素的静态方法。(以上文档没有Array的示例 ,明天补充)

  • 相关阅读:
    一道打印的面试题
    Quartz使用总结
    子类和父类之间的静态代码块、静态方法、非静态代码块、构造函数之间的执行关系
    springboot使用 @EnableScheduling、@Scheduled开启定时任务
    springboot的Interceptor、Filter、Listener及注册
    ConcurrentHashMap 的工作原理及代码实现
    为什么Hashtable ConcurrentHashmap不支持key或者value为null
    Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解
    Android 自定义title 之Action Bar
    Android常用控件之GridView与ExpandableListView的用法
  • 原文地址:https://www.cnblogs.com/CjtBlog/p/13555508.html
Copyright © 2011-2022 走看看