反射机制----Method,Field,Constructor
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相关推荐
- Java 反射机制[Field反射]
Java 反射机制[Field反射] 1. 反射概念及功能 反射就是把Java类中的各种成分映射成对应的Java类.比如一个Java类中用一个Class类的对象来表示. 一个类中的组成部分分为成员变 ...
- java什么时候用反射_Java反射机制使用场景
1 import java.io.*;2 importjava.util.Properties;3 4 /*问题描述:存在一个主板--已经定义好,不想修改其代码,还想在主板上面增加一些其他功能?5 * ...
- 反射机制详解(重点).
目录: 一.反射机制概述 获取Class的三种方式必须掌握 二.通过读属性文件实例化对象 [重点 框架的时候常用] 三.只让静态代码块执行可以使用Class.forName [重点 JDBC技 ...
- Java反射机制(反射Field,Method,Constructor,资源绑定器)
目录 反射机制 1.反射机制的作用 2.反射机制的相关类在哪个包下 3.反射机制的相关类有哪些 获取Class的三种方式 通过反射实例化对象 通过读属性文件实例化对象 只让静态代码块执行可以使用for ...
- 注解和反射详细笔记。自定义注解,元注解,内置注解。反射机制,Java Reflection,Java内存分析,反射操作注解,java.lang.reflect.Method,Class
文章目录 注解 什么是注解 内置注解 元注解 自定义注解 反射机制 静态语言 vs 静态语言 Java Reflection 反射相关的主要API Class类 Java内存分析 创建运行时类的对象 ...
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...
方法1:通过get()方法获取属性值 package com.sxd.test.controller;public class FirstCa{private Integer num;private ...
- Java源码:java.lang.reflect反射之AccessibleObject、ReflectionFactory、Filed、Method、Constructor类
//by yan 20191206 Java的反射机制,它的定义是:程序在运行中时,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性.简单的来说就是 ...
- java学习(175):method类反射机制
//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;priva ...
- java反射取实体字符串_JAVA反射机制 通过反射 Field类获取和修改对象类的字符串值...
实际编程中如果我们要使用系统中未暴露的方法,我们可以通过反射来使用这些方法,但在使用过程中我们很难确定方法对用的参数类型,以下的代码可以帮你得到这些信息: package cn.sunzn.refle ...
最新文章
- CentOS7关闭防火墙方法
- apache的“按周配置访问日志轮询”,需要安装cronolg软件
- 屏幕滚动控件ScrollView的使用
- 初学者用涩性胶皮好还是粘性_乒乓球胶皮的保养方法
- 终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
- 阿里十年DBA经验产品经理:真的不要再有一起删库跑路事件了
- Win7旗舰版系统如何设置定时关机
- python并发运行
- PaddleDetection的学习笔记
- Apache PLC4X开发者向企业下最后通牒:如不提供资助将停止支持
- 计算机硬件物理设备包含,计算机硬件
- 前端页面 div+css内容太长,实现点击展开余下全文(修改版)
- 2020 mse 清华_家长们看过来!2020年下半年剑桥MSE考试备考全攻略!
- android webview aosp com.android.webview
- 与 vmx86 驱动程序的版本不匹配解决方法
- Welcome Here
- android x86主动防御,360手机卫士首家实现X86架构手机主动防御
- Intel MKL基础(4)MKL函数举例(BLAS and Sparse BLAS)
- flex:默认值;flex:1;flex:auto; 使用
- 年度好莱坞大片《东京出逃》,藏身琴盒脱身后飞跃亚洲大陆
热门文章
- Django_前端显示Matplotlib画的图(亲测)
- 如何优雅的使用RabbitMQ?
- Go的sync.WaitGroup(二):WaitGroup让主程序与协程全部都执行 并且全部执行完成
- mac编译php apache,在Mac OS上自行编译安装Apache服务器和PHP解释器
- python mro c3_python的MRO和C3算法
- 无意义”的标签div和span的区别
- mysql guid_MySQL – 自动增加到guid
- node开启子线程_多进程 amp; Node.js web 实现
- rpm安装mysql报错_【CentOS-65】通过rpm包安装mysql57解决了server报错和mysqld启动报错的问题...
- java编写教师类输出_Java类和对象的区别和联系,超简单易懂!