“JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性”

一、类对象的获取

1.通过对象获取

Object obj = new Object();
obj.getClass();

2.通过类名获取

Object.class;

3.通过类的路径名获取

Class.forName("com.metadata.Student");

二、类的实例化和构造函数

获取到的class对象可以直接通过clazz.newInstance()方法实例化,但是需要目标类有默认无参构造函数,不然会抛出异常。

在类没有默认无参构造函数,或者需要某个具体的构造函数来实例化的情况,需要通过Constructor类的newInstance()来完成。

1.获取公有构造函数,不包括父类

//Class
public Constructor<?>[] getConstructors()
public Constructor<T> getConstructor(Class<?>... parameterTypes)

2.获取当前类构造函数,忽略修饰符

//Class
public Constructor<?>[] getDeclaredConstructors()
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

构造函数调用

//Constructor
public T newInstance(Object... initargs)
//忽略修饰符,强制调用
public void setAccessible(boolean flag)

三、类成员变量的获取

1.获取公有变量,包括父类

//Class
public Field[] getFields()
public Field getField(String name)

2.获取当前类成员变量,忽略修饰符

//Class
public Field[] getDeclaredFields()
public Field getDeclaredField(String name)

成员变量赋值

//Field
//obj为实例对象
public void set(Object obj,Object value)
//忽略修饰符,强制调用
public void setAccessible(boolean flag)

四、类方法的获取

1.获取公有方法,包括父类

//Class
public Method[] getMethods()
public Method getMethod(String name,
Class<?>... parameterTypes)

2.获取当前类方法,忽略修饰符

//Class
public Method[] getDeclaredMethods()
public Method getDeclaredMethod(String name,
Class<?>... parameterTypes)

方法调用

//Method
//obj为类实例化对象,如果为静态方法obj为Null
invoke(Object obj, Object... args)
//忽略修饰符,强制调用
public void setAccessible(boolean flag)

Java反射常用API汇总的更多相关文章

  1. java selenium常用API汇总

    (WebElement.iFrame.select.alert.浏览器窗口.事件.js)     一 WebElement相关方法 1.点击操作 WebElement button = driver. ...

  2. 反射常用API

    反射所有功能都是通过class API来实现的 class常用API有: 1.class.GETINTERFACES():获得这个类实现的接口. 2.class.getMethods() Method ...

  3. 反射常用API以及内省机制(代码)

    学习内容: (1)获取构造函数 这里不贴Person类了,不然代码太多太乱了,只给出一些常用API // 创建字节码对象 Class<?> aClass = Class.forName(& ...

  4. Java 之常用API(一)

    常用API  1 API概述  2 Scanner类与String类  3 StringBuilder类 NO.one API概述 1.1 API概述 API(Application Programm ...

  5. Java反射常用示例

    package xmq.study.reflection; import java.lang.annotation.Annotation; import java.lang.reflect.Const ...

  6. Java之常用API

    API概述 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些 ...

  7. java poi reader常用API汇总

    注意:(1)判断行的最大数量建议使用sheet.getLastRowNum();(2)判断每行最大列数建议使用row.getLastCellNum(); [JAVA]特别注意,POI中getLastR ...

  8. Java 之常用API(二)

    Object类 & System类 日期相关类 包装类 & 正则表达式 Object类 & System类 1.1 Object类 1.1.1 概述 Object类是Java语 ...

  9. Java 基础 常用API (Object类,String类,StringBuffer类)

    Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...

随机推荐

  1. 9.1 mysql+centos7+主从复制

    MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的 ...

  2. Java Spring Controller 获取请求参数的几种方法

    技术交流群:233513714  1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"=& ...

  3. shell判断文件是否存在[转]

    原文出处: http://canofy.iteye.com/blog/252289 shell判断文件,目录是否存在或者具有权限 #!/bin/sh myPath="/var/log/htt ...

  4. java 解析/读取 种子/bt/torrent 内容

    碰到不会的技术问题,我还是先度娘.能中文看懂,为什么非要看英文呢. java 解析/读取 种子/bt/torrent  内容,这个度娘给的满意答案并不是很多.GG之后的搜索结果出现了stackover ...

  5. JMeter学习笔记(四) HTTP Cookies 管理器

    有些接口执行时,要求要先登录,此时就需要用到 HTTP Cookies 管理器.不过有些项目是使用的token,即添加HTTP信息头管理器,获取登录后的token,至于token与cookies的区别 ...

  6. python之路——网络编程

    一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好.但是如果这两个程序之间想要传递一个数据, ...

  7. CodeForces-757B Bash's Big Day

    题目链接 https://vjudge.net/problem/CodeForces-757B 题目 Description Bash has set out on a journey to beco ...

  8. 原始套接字--简易ping程序

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> ...

  9. Python 的音乐库

    前言 其实处理这个用 Matlab 最方便,之前把 guitar-synthesizer 从 Matlab 移植到 Python,过程中更是体会到了这一点. 不过 Matlab 安装包又大,启动又慢, ...

  10. HDU 1709 母函数天平问题 可出现减法的情况 The Balance

    The Balance Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...