反射(三)获取元素

简介: 反射(三)获取元素

获取类

反射技术的第一步是先得到 Class 类对象,有三种方式获取:

  • 类名.class
  • 类的对象.getClass()
  • Class.forName("类的全限名"):public static Class<?> forName(String className)

Class 类下的方法:

方法 作用
String getSimpleName() 获得类名字符串:类名
String getName() 获得类全名:包名+类名
T newInstance() 创建 Class 对象关联类的对象,底层是调用无参数构造器,已经被淘汰

获取构造

获取构造器的 API:

  • Constructor getConstructor(Class... parameterTypes):根据参数匹配获取某个构造器,只能拿 public 修饰的构造器
  • Constructor getDeclaredConstructor(Class... parameterTypes):根据参数匹配获取某个构造器,只要申明就可以定位,不关心权限修饰符
  • Constructor[] getConstructors():获取所有的构造器,只能拿 public 修饰的构造器
  • Constructor[] getDeclaredConstructors():获取所有构造器,只要申明就可以定位,不关心权限修饰符

Constructor 的常用 API:

方法 作用
T newInstance(Object... initargs) 创建对象,注入构造器需要的数据
void setAccessible(true) 修改访问权限,true 攻破权限(暴力反射)
String getName() 以字符串形式返回此构造函数的名称
int getParameterCount() 返回参数数量
Class<?>[] getParameterTypes 返回参数类型数组

获取变量

获取 Field 成员变量 API:

  • Field getField(String name):根据成员变量名获得对应 Field 对象,只能获得 public 修饰
  • Field getDeclaredField(String name):根据成员变量名获得对应 Field 对象,所有申明的变量
  • Field[] getFields():获得所有的成员变量对应的 Field 对象,只能获得 public 的
  • Field[] getDeclaredFields():获得所有的成员变量对应的 Field 对象,只要申明了就可以得到

Field 的方法:给成员变量赋值和取值

方法 作用
void set(Object obj, Object value) 给对象注入某个成员变量数据,obj 是对象,value 是值
Object get(Object obj) 获取指定对象的成员变量的值,obj 是对象,没有对象为 null
void setAccessible(true) 暴力反射,设置为可以直接访问私有类型的属性
Class getType() 获取属性的类型,返回 Class 对象
String getName() 获取属性的名称

获取方法

获取 Method 方法 API:

  • Method getMethod(String name,Class...args):根据方法名和参数类型获得方法对象,public 修饰
  • Method getDeclaredMethod(String name,Class...args):根据方法名和参数类型获得方法对象,包括 private
  • Method[] getMethods():获得类中的所有成员方法对象返回数组,只能获得 public 修饰且包含父类的
  • Method[] getDeclaredMethods():获得类中的所有成员方法对象,返回数组,只获得本类申明的方法

Method 常用 API:

  • public Object invoke(Object obj, Object... args):使用指定的参数调用由此方法对象,obj 对象名
目录
相关文章
|
4月前
通过反射获取方法返回的类型
通过反射获取方法返回的类型
|
4月前
|
XML 安全 Java
反射&&枚举
反射&&枚举
29 0
|
安全 Java 编译器
反射与枚举
本篇文章主要介绍Java语法中的反射与枚举部分。
96 0
反射与枚举
|
Java
JAVA反射时(getMethod),参数是数组怎么办?
JAVA反射时(getMethod),参数是数组怎么办?
171 0
元素中必知重要属性和方法
上一篇文章我们学习了 Angular 中自定义 Video 操作,如果读者留意的话,会发现在这篇文章中就开始操作元素的属性 scrollLeft,这是很常用的一样属性。那么还有什么属性和方法比较重要呢?其又代表什么意思呢?下面我们进入主题。
元素中必知重要属性和方法
|
Java 数据库
java反射机制查找类的属性并赋值
先说一下需求:最近做一个项目其中需要将前台传来的数组存到数据库,但是这个表里有15个字段,集合是不固定的,然后要把这个集合的数值赋给这个类的相应属性,然后存到数据库中。集合长度应小于等于这个类属性的个数。
307 0
|
Java 开发者
反射与类操作(反射调用构造)|学习笔记
快速学习 反射与类操作(反射调用构造)
114 0
|
C#
C#使用反射设置属性值
最近在Refix一个支持Excel文件导入导出功能时,发现有用到反射的相关技能。故而在网上查了些资料,通过代码调试加深下理解。 class Program { static void Main(string[] args) { ...
1356 0
|
Java 容器
Java反射 - 数组
在Java中使用数组反射有时可能有点棘手。 特别是如果您需要获取某个类型的数组的类对象,如int []等。本文将讨论如何通过Java Reflection创建数组并获取其类对象。
883 0