JAVA中反射机制六(java.lang.reflect包)

JAVA中反射机制六(java.lang.reflect包)一、简介java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口。反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问。它允许在安全限制内使用反射的字段,

大家好,又见面了,我是你们的朋友全栈君。

一、简介

java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口。反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问。它允许在安全限制内使用反射的字段,方法和构造函数对其底层对等进行操作。

 

二、java.lang.reflect AccessibleObject类

java.lang.reflect.AccessibleObject类是Field,Method和Constructor类对象的基类。 它提供了将反射对象标记为在使用它时抑制默认Java语言访问控制检查的功能。 当使用Fields,Methods或Constructors类对象来设置或获取字段,调用方法,或创建和初始化新的类实例时,执行访问分别检查(对于public,默认(包)访问,protected和private成员) 。 在反射对象中设置可访问标志允许具有足够权限的复杂应用程序(如Java对象序列化或其他持久性机制)以被禁止的方式操作对象。

 

类声明

 

以下是java.lang.reflect.AccessibleObject类的声明 –

 

public class AccessibleObject extends Object implements AnnotatedElement 

 

 

 

构造函数

 

编号 构造函数 描述
1 protected AccessibleObject() 构造函数:仅由Java虚拟机使用。

 

类方法

 

编号 构造函数 描述
1 Annotation[] getAnnotations() 返回此元素上存在的所有注解。
3 Annotation[] getDeclaredAnnotations() 返回此元素上直接存在的所有注解。
4 boolean isAccessible() 获取此对象的可访问标志的值。
5 static void setAccessible(AccessibleObject[] array, boolean flag) 使用单一安全检查来设置对象数组的可访问标志的一个方便的方法(为了效率)。
7 void setAccessible(boolean flag) 将此对象的可访问标志设置为指示的布尔值。

 

 

三、java.lang.reflect.Array类

java.lang.reflect.Array类提供静态方法来动态创建和访问Java数组。 Array允许在getset操作期间扩展转换,但如果发生缩小转换,则会抛出IllegalArgumentException异常

 

类声明

 

以下是java.lang.reflect.Array类的声明 –

 

public final class Array extends Object

 

类方法

 

序号 方法 描述
1 static Object get(Object array, int index) 以对象形式返回指定数组对象中的索引组件的值。
2 static boolean getBoolean(Object array, int index) 以布尔值形式返回指定数组对象中的索引组件的值。
3 static byte getByte(Object array, int index) 以字节形式返回指定数组对象中的索引组件的值。
4 static char getChar(Object array, int index) char形式返回指定数组对象中的索引组件的值。
5 static double getDouble(Object array, int index) double形式返回指定的数组对象的索引组件的值。
6 static float getFloat(Object array, int index) float形式返回指定数组对象中的索引组件的值。
7 static int getInt(Object array, int index) int形式返回指定数组对象中的索引组件的值。
8 static int getLength(Object array) int形式返回指定数组对象的长度。
9 static long getLong(Object array, int index) long形式返回指定数组对象中的索引组件的值。
10 static short getShort(Object array, int index) short形式返回指定数组对象中的索引组件的值。
11 componentType, int length)” href=”http://www.yiibai.com/javareflect/javareflect_array_newinstance.html” target=”_blank” rel=”noopener”>static Object newInstance(Class<?> componentType, int length) 创建具有指定组件类型和长度的新数组。
13 static void set(Object array, int index, Object value) 将指定数组对象的索引组件的值设置为指定的新值。
14 static void setBoolean(Object array, int index, boolean z) 将指定数组对象的索引组件的值设置为指定的布尔值。
15 static void setByte(Object array, int index, byte b) 将指定数组对象的索引组件的值设置为指定的字节值。
16 static void setChar(Object array, int index, char c) 将指定数组对象的索引组件的值设置为指定的char值。
17 static void setDouble(Object array, int index, double d) 将指定数组对象的索引组件的值设置为指定的double值。
18 static void setFloat(Object array, int index, float f) 将指定数组对象的索引组件的值设置为指定的浮点值。
19 static void setInt(Object array, int index, int i) 将指定数组对象的索引组件的值设置为指定的int值。
20 static void setLong(Object array, int index, long l) 将指定数组对象的索引组件的值设置为指定的长整型值。
21 static void setShort(Object array, int index, short s) 将指定数组对象的索引组件的值设置为指定的短整型值。

 

方法继承

 

此类继承以下类的方法 –

 

  • java.lang.Object

 

四、java.lang.reflect Constructor<T>类

java.lang.reflect.Constructor类提供了一个类的单个构造函数的信息和访问权限。 构造函数允许在将实际参数传到newInstance()与底层构造函数的形式参数进行匹配时进行扩展转换,但如果发生缩小转换,则会抛出IllegalArgumentException异常。

 

类声明

 

以下是java.lang.reflect.Constructor类的声明 –

 

public final class Constructor extends AccessibleObject implements GenericDeclaration, Member 

 

Java

 

类方法

 

序号 方法 描述
1 boolean equals(Object obj) 将此构造函数与指定对象进行比较。
2 Annotation[] getDeclaredAnnotations() 返回此元素上直接存在的所有注释。
4 [] getExceptionTypes()” href=”http://www.yiibai.com/javareflect/javareflect_constructor_getexceptiontypes.html” target=”_blank” rel=”noopener”>Class<?>[] getExceptionTypes() 返回一个Class对象数组,该数组表示由此构造方对象表示的底层构造函数声明的异常类型。
6 Type[] getGenericExceptionTypes() 返回一个Type对象数组,它以声明顺序表示由此构造方法对象表示的方法的形式参数类型。
7 Type[] getGenericParameterTypes() 返回一个Type对象数组,它以声明顺序表示由此构造方法对象表示的方法的形式参数类型。
8 int getModifiers() 返回由此Constructor对象表示的构造函数的Java语言修饰符,以整数形式返回。
9 String getName() 以字符串形式返回此构造函数的名称。
10 Annotation[][] getParameterAnnotations() 返回一个数组数组,表示由Constructor对象表示的方法的形式参数(以声明顺序)的注释。
11 int hashCode() 返回此构造函数的哈希码。
13 boolean isSynthetic() 如果此构造函数是合成构造函数,则返回true; 否则返回false
14 boolean isVarArgs() 如果该构造函数被声明为采用可变数量的参数,则返回true; 否则返回false
15 T newInstance(Object… initargs) 使用此Constructor对象表示的构造函数,使用指定的初始化参数来创建和初始化构造函数的声明类的新实例。
16 String toGenericString() 返回描述此构造方法的字符串,包括类型参数。
17 String toString() 返回描述此构造函数的字符串。

 

 

 

 

五、java.lang.reflect.Field类

java.lang.reflect.Field类提供有关类或接口的单个字段的信息和动态访问。反射的字段可以是类(静态)字段或实例字段。字段允许在获取或设置访问操作期间扩展转换,但如果发生缩小转换,则会引发IllegalArgumentException。

 

类声明

 

以下是java.lang.reflect.Field类的声明 –

 

public final class Field extends AccessibleObject implements Member 

 

Java

 

类方法

 

序号 方法 描述
1 boolean equals(Object obj) 将此字段与指定对象进行比较。
2 Object get(Object obj) 返回指定对象上由Field表示的字段的值。
3 boolean getBoolean(Object obj) 获取静态或实例布尔字段的值。
5 byte getByte(Object obj) 获取静态或实例字节字段的值。
6 char getChar(Object obj) 获取char类型的静态或实例字段的值,或者通过加宽转换可转换为char类型的另一个基本类型的值。
7 Annotation[] getDeclaredAnnotations() 返回此元素上直接存在的所有注释。
8 double getDouble(Object obj) 获取double类型的静态或实例字段的值,或者通过加宽转换可转换为double类型的另一个基本类型的值。
10 float getFloat(Object obj) 获取类型为float的静态或实例字段的值,或者通过加宽转换可转换为float类型的另一个原始类型的值。
11 Type getGenericType() 返回一个Type对象,该对象表示由Field对象表示的字段的声明类型。
12 int getInt(Object obj) 获取类型为int的静态或实例字段的值,或者通过加宽转换可转换为类型int的另一个原始类型的值。
13 long getLong(Object obj) 获取long类型的静态或实例字段的值,或者通过扩展转换可转换为long类型的另一个原始类型的值。
14 int getModifiers() 返回由Field对象表示的字段的Java语言修饰符,以整数形式返回。
15 String getName() 返回Field对象表示的字段的名称。
16 short getShort(Object obj) 获取类型为short的另一个原始类型的静态或实例字段的值,通过加宽转换可转换为short类型。
17 int hashCode() 返回Field的哈希码。
19 boolean isEnumConstant() 如果字段表示枚举类型的元素,则返回true; 否则返回false
20 boolean isSynthetic() 将指定对象参数上的Field对象表示的字段设置为指定的新值。
21 void setBoolean(Object obj, boolean z) 为指定对象上字段的值设置为布尔值。
22 void setByte(Object obj, byte b) 为指定对象上字段的值设置为字节值。
23 void setChar(Object obj, char c) 为指定对象上字段的值设置为字符值。
24 void setDouble(Object obj, double d) 为指定对象上字段的值设置为double值。
25 void setFloat(Object obj, float f) 为指定对象上字段的值设置为浮点数。
26 void setInt(Object obj, int i) 为指定对象上字段的值设置为int值。
27 void setLong(Object obj, long l) 为指定对象上字段的值设置为long值。
28 void setShort(Object obj, short s) 为指定对象上字段的值设置为short值。
29 String toGenericString() 返回描述此Field对象的字符串,包括其通用类型。
30 String toString() 返回描述此Field对象的字符串。

 

方法继承

 

  • java.lang.reflect.AccessibleObject
  • java.lang.Object

 

六、java.lang.reflect.Method类

java.lang.reflect.Method类提供有关类或接口上单个方法的信息和访问权限。反映的方法可以是类方法或实例方法(包括抽象方法)。 当匹配实际参数以使用底层方法的形式参数调用时,方法允许扩展转换,但如果发生缩小转换,则会引发IllegalArgumentException异常。

 

类声明

 

以下是java.lang.reflect.Method类的声明 –

 

public final class Method<T> extends AccessibleObject implements GenericDeclaration, Member 

 

Java

 

类方法

 

序号 方法 描述
1 boolean equals(Object obj) 将此方法与指定的对象进行比较。
2 Annotation[] getDeclaredAnnotations() 返回此元素上直接存在的所有注释。
4 Object getDefaultValue() 返回此Method实例表示的注释成员的默认值。
6 Type[] getGenericExceptionTypes() 返回一个Type对象的数组,表示声明为此Constructor对象抛出的异常。
8 Type[] getGenericParameterTypes() 返回一个Type对象数组,它以声明顺序表示由此构造方法对象表示的方法的形式参数类型。
9 Type getGenericReturnType() 返回一个Type对象,该对象表示此Method对象表示的方法的正式返回类型。
10 int getModifiers() 返回由此Method对象表示的方法的Java语言修饰符,以整数形式返回。
11 String getName() 以字符串形式返回此方法的名称。
12 Annotation[][] getParameterAnnotations() 返回一个数组数组,它们以声明顺序表示由此Method对象表示的方法的形式参数的注释。
13 getReturnType()” href=”http://www.yiibai.com/javareflect/javareflect_method_getreturntype.html” target=”_blank” rel=”noopener”>Class<?> getReturnType() 返回一个Class对象,该对象表示此Method对象表示的方法的正式返回类型。
15 int hashCode() 返回此构造函数的哈希码。
16 Object invoke(Object obj, Object…args) 在具有指定参数的指定对象上调用此Method对象表示的底层方法。
17 boolean isBridge() 如果此方法是桥接方法,则返回true; 否则返回false
18 boolean isSynthetic() 如果此方法是合成方法,则返回true; 否则返回false
19 boolean isVarArgs() 如果此方法被声明为使用可变数量的参数,则返回true; 否则返回false
20 String toGenericString() 返回描述此方法的字符串,包括类型参数。
21 String toString() 返回描述此方法的字符串。

 

方法继承

此类继承以下类的方法 –

  • java.lang.reflect.AccessibleObject
  • java.lang.Object

 

七、java.lang.reflect.Modifier类

java.lang.reflect.Modifier类提供了用于解码类和成员访问修饰符的静态方法和常量。修饰符集合被表示为具有表示不同修饰符的不同位位置的整数。

 

类声明

 

以下是java.lang.reflect.Modifier类的声明 –

 

public class Modifier extends Object 

 

Java

 

字段

 

以下是java.lang.reflect.Modifier类的字段 –

 

  • static int ABSTRACT – 表示abstract修饰符的int值。
  • static int FINAL – 表示final修饰符的int值。
  • static int INTERFACE – 表示interface修饰符的int值。
  • static int NATIVE – 表示abstract修饰符的int值。
  • static int PRIVATE – 表示private修饰符的int值。
  • static int PROTECTED – 表示protected修饰符的int值。
  • static int PUBLIC – 表示public修饰符的int值。
  • static int STATIC – 表示static修饰符的int值。
  • static int STRICT – 表示strictfp修饰符的int值。
  • static int SYNCHRONIZED – 表示synchronized修饰符的int值。
  • static int TRANSIENT – 表示transient修饰符的int值。
  • static int VOLATILE – 表示volatile修饰符的int值。

 

构造函数

 

序号 方法 描述
1 Modifier() 默认构造函数

 

类方法

 

序号 方法 描述
1 static int classModifiers() 返回一个int值将可以应用于一个类的源语言修饰符组合在一起。
2 static int constructorModifiers() 返回一个int值将可以应用于构造函数的源语言修饰符组合在一起。
3 static int fieldModifiers() 返回一个int值将可以应用于字段的源语言修饰符组合在一起。
4 static int interfaceModifiers() 返回一个int值将可以应用于interface的源语言修饰符组合在一起。
5 static boolean isAbstract(int mod) 如果整数参数包含abstract修饰符,返回true,否则返回false
6 static boolean isFinal(int mod) 如果整数参数包含final修饰符,则返回true,否则返回false
7 static boolean isInterface(int mod) 如果整数参数包含interface修饰符,返回true,否则返回false
8 static boolean isNative(int mod) 如果整数参数包含native修饰符,则返回true,否则返回false
9 static boolean isPrivate(int mod) 如果整数参数包含private修饰符,返回true,否则返回false
10 static boolean isProtected(int mod) 如果整数参数包含protected修饰符,则返回true,否则返回false
11 static boolean isPublic(int mod) 如果整数参数包含public修饰符,则返回true,否则返回false
12 static boolean isStatic(int mod) 如果整数参数包含static修饰符,则返回true,否则返回false
13 static boolean isStrict(int mod) 如果整数参数包含strictfp修饰符,则返回true,否则返回false
14 static boolean isSynchronized(int mod) 如果整数参数包含synchronized修饰符,返回true,否则返回false
15 static boolean isTransient(int mod) 如果整数参数包含transient 修饰符,则返回true,否则返回false
16 static boolean isVolatile(int mod) 如果整数参数包含volatile修饰符,则返回true,否则返回false
17 static int methodModifiers() 返回一个将可以应用于方法的源语言修饰符组合在一起的int值。
18 static String toString(int mod) 返回描述指定修饰符中的访问修饰符标志的字符串。

 

方法继承

此类继承以下类的方法 –

  • java.lang.Object

八、java.lang.reflect.Proxy类

java.lang.reflect.Proxy类提供用于创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理类的超类。

 

类声明

 

以下是java.lang.reflect.Proxy类的声明 –

 

public class Proxy extends Object implements Serializable 

 

Java

 

字段

 

以下是java.lang.reflect.Proxy类的字段 –

 

  • protected InvocationHandler h – 该代理实例调用的处理程序。

 

构造函数

 

序号 方法 描述
1 protected Proxy(InvocationHandler h) 从一个子类(通常是一个动态代理类)构造一个新的Proxy实例,并为其调用处理程序指定一个值。
   

 

类方法

 

序号 方法 描述
1 static InvocationHandler getInvocationHandler(Object proxy) 返回指定代理实例的调用处理程序。
2 cl)” href=”http://www.yiibai.com/javareflect/javareflect_proxy_isproxyclass.html” target=”_blank” rel=”noopener”>static boolean isProxyClass(Class<?> cl) 当且仅当使用getProxyClass方法或newProxyInstance方法将指定的类动态生成为代理类时,才返回true
4 方法继承

此类继承以下类的方法 –

  • java.lang.Object
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155059.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么用excel做回归分析_用excel做数据分析

    怎么用excel做回归分析_用excel做数据分析Excel数据分析工具库是个很强大的工具,可以满足基本的统计分析,这里介绍用Excel数据分析工具库中的回归做回归分析。本文仅作为学习笔记之用,欢迎各位交流指正。本节知识点: Excel数据分析工具库—回归 线性回归和非线性回归 简单线性回归和多重线性回归 逻辑斯蒂回归 一、什么是回归分析(Regression)1、定义确定两种…

    2025年6月23日
    2
  • mysql list table_java resultset转list

    mysql list table_java resultset转list我在Orcle里写了一个Sql语句,用到了LISTAGG,现在要改成mysql数据库,我要怎么改这个Sql语句?SELECTA.GUID,A.COMPANY_GUID,A.GOODS_CODE,A.GOODS_NAME,A.SPECIFICATIONS,A.SMALL_IM…我在Orcle里写了一个Sql语句,用到了LISTAGG,现在要改成mysql数据库,我要怎么改这个Sql语句?SELE…

    2025年9月23日
    7
  • 手把手用keras分类mnist数据集

    实战流程获得数据,并将数据处理成合适的格式按照自己的设计搭建神经网络设定合适的参数训练神经网络在测试集上评价训练效果一、认识mnist数据集fromkeras.utilsimportto_categoricalfromkerasimportmodels,layers,regularizersfromkeras.optimizersimportRMSprop…

    2022年4月7日
    35
  • navicat for mysq 15l激活码【中文破解版】

    (navicat for mysq 15l激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWN…

    2022年3月21日
    51
  • vs2015注册码[通俗易懂]

    vs2015注册码[通俗易懂]VisualStudioProfessional2015简体中文版(专业版)KEY:HMGNV-WCYXV-X7G9W-YCX63-B98R2VisualStudioEnterprise2015简体中文版(企业版)KEY:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV专业版:HMGNV-WCYXV-X7G9W-YCX63-B98R2企业版:HM6NR-QXX7C-DFW2Y…

    2022年8月22日
    6
  • Python爬虫入门这一篇就够了「建议收藏」

    Python爬虫入门这一篇就够了「建议收藏」何谓爬虫所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息。爬虫三要素抓取分析存储基础

    2022年7月6日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号