public class ClassUtil {/** 打印类的信息,包括类的成员函数,成员变量*/public static void printClassMessage(Object obj){//要获取类的信息   首先要获取类的类类型Class c = obj.getClass();//传递的是哪个子类的对象 c就是该子类的类类型//获取类的名称System.out.println("类的名称是:"+c.getName());/** Method类,方法对象* 一个成员方法就是一个Method对象* getMethods()方法获取的是所有的public的函数,包括父类继承而来的* getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限*/Method[] ms = c.getMethods();//c.getDeclaredMethods()for(int i=0;i < ms.length;i++){//得到方法的返回值类型的类类型Class returnType = ms[i].getReturnType();System.out.print(returnType.getName() + " ");//得到方法的名称System.out.print(ms[i].getName() + "(");//获取参数类型---->得到的是参数列表的类型的类类型Class[] paramType = ms[i].getParameterTypes();for (Class class1 : paramType) {System.out.print(class1.getName() + ",");}System.out.println(")");}}}

public class ClassDemo3 {public static void main(String[] args) {String s = "hello";ClassUtil.printClassMessage(s);}}

这段代码将会输出对应的类的方法信息.

下面这段代码表示类的相关属性:


public static void printFieldMessage(Object obj) {Class c = obj.getClass();/** 成员变量也是对象* java.lang.reflect.Field* Field类封装了关于成员变量的操作* getFields()方法获取的是所有的public的成员变量的信息* getDeclaredFields获取的是该类自己声明的成员变量的信息*/Field[] fs = c.getDeclaredFields();for(Field field:fs){//得到成员变量的类型的类类型Class fieldType = field.getType();String typeName = fieldType.getName();//得到成员变量的名称String fieldName = field.getName();System.out.println(typeName + " "+ fieldName);}}

下面这段代码表示类的构造函数:


/** 打印对象的构造函数的信息*/public static void printConMessage(Object obj){Class c = obj.getClass();/** 构造函数也是对象* java.lang.Constructor中封装了构造函数的信息* getConstructors获取所有的public的构造函数* getDeclaredConstructors得到所有的构造函数*///Constructor[] cs =  c.getConstructors();Constructor[] cs = c.getDeclaredConstructors();for(Constructor constructor : cs){System.out.print(constructor.getName() + "(");//获取构造函数的参数列表---->得到的是参数列表的类类型Class[] paramType = constructor.getParameterTypes();for(Class c1:paramType){System.out.print(c1.getName()+",");}System.out.println(")");}}

反射机制----Method,Field,Constructor相关推荐

  1. Java 反射机制[Field反射]

    Java 反射机制[Field反射] 1.  反射概念及功能 反射就是把Java类中的各种成分映射成对应的Java类.比如一个Java类中用一个Class类的对象来表示. 一个类中的组成部分分为成员变 ...

  2. java什么时候用反射_Java反射机制使用场景

    1 import java.io.*;2 importjava.util.Properties;3 4 /*问题描述:存在一个主板--已经定义好,不想修改其代码,还想在主板上面增加一些其他功能?5 * ...

  3. 反射机制详解(重点).

    目录: 一.反射机制概述     获取Class的三种方式必须掌握 二.通过读属性文件实例化对象 [重点 框架的时候常用] 三.只让静态代码块执行可以使用Class.forName [重点 JDBC技 ...

  4. Java反射机制(反射Field,Method,Constructor,资源绑定器)

    目录 反射机制 1.反射机制的作用 2.反射机制的相关类在哪个包下 3.反射机制的相关类有哪些 获取Class的三种方式 通过反射实例化对象 通过读属性文件实例化对象 只让静态代码块执行可以使用for ...

  5. 注解和反射详细笔记。自定义注解,元注解,内置注解。反射机制,Java Reflection,Java内存分析,反射操作注解,java.lang.reflect.Method,Class

    文章目录 注解 什么是注解 内置注解 元注解 自定义注解 反射机制 静态语言 vs 静态语言 Java Reflection 反射相关的主要API Class类 Java内存分析 创建运行时类的对象 ...

  6. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...

    方法1:通过get()方法获取属性值 package com.sxd.test.controller;public class FirstCa{private Integer num;private ...

  7. Java源码:java.lang.reflect反射之AccessibleObject、ReflectionFactory、Filed、Method、Constructor类

    //by yan 20191206 Java的反射机制,它的定义是:程序在运行中时,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性.简单的来说就是 ...

  8. java学习(175):method类反射机制

    //class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;priva ...

  9. java反射取实体字符串_JAVA反射机制 通过反射 Field类获取和修改对象类的字符串值...

    实际编程中如果我们要使用系统中未暴露的方法,我们可以通过反射来使用这些方法,但在使用过程中我们很难确定方法对用的参数类型,以下的代码可以帮你得到这些信息: package cn.sunzn.refle ...

最新文章

  1. CentOS7关闭防火墙方法
  2. apache的“按周配置访问日志轮询”,需要安装cronolg软件
  3. 屏幕滚动控件ScrollView的使用
  4. 初学者用涩性胶皮好还是粘性_乒乓球胶皮的保养方法
  5. 终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
  6. 阿里十年DBA经验产品经理:真的不要再有一起删库跑路事件了
  7. Win7旗舰版系统如何设置定时关机
  8. python并发运行
  9. PaddleDetection的学习笔记
  10. Apache PLC4X开发者向企业下最后通牒:如不提供资助将停止支持
  11. 计算机硬件物理设备包含,计算机硬件
  12. 前端页面 div+css内容太长,实现点击展开余下全文(修改版)
  13. 2020 mse 清华_家长们看过来!2020年下半年剑桥MSE考试备考全攻略!
  14. android webview aosp com.android.webview
  15. 与 vmx86 驱动程序的版本不匹配解决方法
  16. Welcome Here
  17. android x86主动防御,360手机卫士首家实现X86架构手机主动防御
  18. Intel MKL基础(4)MKL函数举例(BLAS and Sparse BLAS)
  19. flex:默认值;flex:1;flex:auto; 使用
  20. 年度好莱坞大片《东京出逃》,藏身琴盒脱身后飞跃亚洲大陆

热门文章

  1. Django_前端显示Matplotlib画的图(亲测)
  2. 如何优雅的使用RabbitMQ?
  3. Go的sync.WaitGroup(二):WaitGroup让主程序与协程全部都执行 并且全部执行完成
  4. mac编译php apache,在Mac OS上自行编译安装Apache服务器和PHP解释器
  5. python mro c3_python的MRO和C3算法
  6. 无意义”的标签div和span的区别
  7. mysql guid_MySQL – 自动增加到guid
  8. node开启子线程_多进程 amp; Node.js web 实现
  9. rpm安装mysql报错_【CentOS-65】通过rpm包安装mysql57解决了server报错和mysqld启动报错的问题...
  10. java编写教师类输出_Java类和对象的区别和联系,超简单易懂!