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的示例 ,明天补充)

  • 相关阅读:
    css mix-blend-mode 混合模式
    vue-slicksort拖拽组件
    123457123457#0#-----com.yuming.TruckCarRun01--前拼后广--大卡车游戏cym
    123457123457#0#---------com.ppGame.SeaPuzzleGame73--前拼后广--宝宝海洋拼图pp
    123457123456#0#-----com.yuming.FromPuzzleGame01--前拼后广--宝宝农场拼图cym
    iOS中NSTimer的使用
    ios排序NSArray(数字.字符串)
    Github排名靠前的iOS库
    mac命令强制清空废纸篓
    我的iOS动画01
  • 原文地址:https://www.cnblogs.com/CjtBlog/p/13555508.html
Copyright © 2011-2022 走看看