对于最新的java1.8而言,reflect中接口的结构是这样的: 

  其中AnnotatedType下的几个子接口可以不用管,其他结构看起来还是很简单的。

  类的继承结构如下: 

  其中security下的几个可以先不管

  而对于java.lang.reflect.ReflectPermission来说,他的主要作用是去除反射默认的权限控制,允许直接操作对象的private等修饰符修饰的属性或者方法等。

  由于反射机制的默认行为受限于Java的访问控制,比如,访问私有的方法,字段,除非拥有访问权限,否则Java安全机制允许查看任意对象有哪些域,而不允许读它们的值(读取将抛异常)。然而如果一个Java程序没有受到安全管理器的控制,就可以覆盖访问控制。为了达到这个目的,就需要调用Field、Method、Constructor对象的setAccessible()方法。

  反射操作的 Permission 类。ReflectPermission 是一种指定权限,没有动作。当前定义的唯一名称是 suppressAccessChecks,它允许取消由反射对象在其使用点上执行的标准 Java 语言访问检查 - 对于 public、default(包)访问、protected、private 成员。

  该包的继承与实现图如下:

  

接口 方法 作用
AnnotatedElement <T extends Annotation> T getAnnotation(Class<T> annotationClass) 如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
default <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass) 返回直接存在于此元素上的指定类型的注释。忽略继承的注释。
Annotation[] getAnnotations() 返回此元素上存在的所有注释。
Annotation[] getDeclaredAnnotations() 返回此元素上存在的所有注释。忽略继承的注释。
default <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass) 返回重复注解的类型,被同注解注解的元素返回该类型注解的数组。参考@Repeatable
default <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> anotationClass) 返回重复注解的类型,被同注解注解的元素返回注解的数组。忽略继承的注释。
default boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) 如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。
AnnotatedType Type getType() 返回表示此注释类型的基础类型。
GenericDeclaration TypeVariable<?>[] getTypeParameters() 返回声明顺序的 TypeVariable 对象的数组,这些对象表示由此 GenericDeclaration 对象表示的一般声明声明的类型变量。
TypeVariable<D extends GenericDeclaration> AnnotatedType[] getAnnotatedBounds()  
Type[] getBounds()   返回表示此类型变量上边界的 Type 对象的数组。
D getGenericDeclaration()   返回 GenericDeclaration 对象,该对象表示声明此类型变量的一般声明。
String getName()   返回此类型变量的名称,它出现在源代码中。
InvocationHandler Object invoke(Object proxy, Method method, Object[] args)  代理实例的调用处理程序 实现的接口。在代理实例上处理方法调用并返回结果。
Member Class<?> getDeclaringClass() 返回表示声明由此 Member 表示的成员或构造方法的类或接口的 Class 对象。
int getModifiers()  作为整数返回由此 Member 所表示的成员或构造方法的 Java 语言修饰符。
String getName()   返回此 Member 表示的底层成员或构造方法的简单名称。
boolean isSynthetic()   如果此成员是编译器引入的,则返回 true;否则,返回 false。
Type default String getTypeName() 获取Type的名称
WildcardType Type[] getLowerBounds()  返回表示此类型变量下边界的 Type 对象的数组。
Type[] getUpperBounds()  返回表示此类型变量上边界的 Type 对象的数组。
GenericArrayType Type getGenericComponentType()   返回表示此数组的组件类型的 Type 对象。此方法创建数组的组件类型。请参见 ParameterizedType 的声明获得参数化类型创建过程的语义,参见 TypeVariable 获得创建类型变量的过程。
ParameterizedType   Type[] getActualTypeArguments() 返回表示此类型实际类型参数的Type对象的数组,即返回一个类声明时的泛型类型
Type getOwnerType()   返回Type对象,表示此类型是其成员之一的类型。
Type getRawType() 返回Type对象,表示声明此类型的类或接口。

Java反射API研究(2)——java.lang.reflect详细内容与关系的更多相关文章

  1. Java反射API研究(3)——java.lang.Class<T>

    对于反射来说,Class是核心,任何反射的对象都需要通过Class来获得. Class 类的实例表示正在运行的 Java 应用程序中的类和接口.枚举是一种类,注释是一种接口.每个数组属于被映射为 Cl ...

  2. Java反射API研究(1)——注解Annotation

    注解在表面上的意思,只是标记一下这一部分,最好的注解就是代码自身.而在java上,由于注解的特殊性,可以通过反射API获取,这种特性使得注解被广泛应用于各大框架,用于配置内容,代替xml文件配置. 要 ...

  3. Java反射API研究(4)——Class中的重要对象

    一.Constructor与Method的父类:Executable Executable表示一个可执行类,构造方法与普通方法都是Executable AnnotatedType[] getAnnot ...

  4. JAVA反射系列之Field,java.lang.reflect.Field使用获取方法

    JAVA反射系列之Field,java.lang.reflect.Field使用获取方法.   转载https://my.oschina.net/u/1407116/blog/209383 摘要 ja ...

  5. java和javax都是Java的API包,java是核心包,javax的x是extension的意思,也就是扩展包。

    java和javax都是Java的API包,java是核心包,javax的x是extension的意思,也就是扩展包.

  6. Java反射API使用实例

    /**     * 访问Class对应的类所包含的注释:getAnnotation();getDelaredAnnotation();     * 访问Class对应的类所包含的内部类:getDecl ...

  7. 基于NACOS和JAVA反射机制动态更新JAVA静态常量非@Value注解

    1.前言 项目中都会使用常量类文件, 这些值如果需要变动需要重新提交代码,或者基于@Value注解实现动态刷新, 如果常量太多也是很麻烦; 那么 能不能有更加简便的实现方式呢? 本文讲述的方式是, 一 ...

  8. 如何通过java反射的方式对java私有方法进行单元测试

    待测试的私有方法: import org.testng.Assert;import org.testng.annotations.BeforeClass;import org.testng.annot ...

  9. JAVA反射概念及使用详解(超详细)

    JAVA反射概念及使用详解 一.什么是反射? 反射:框架设计的灵魂 框架:半成品软件.可以在框架的基础上进行软件开发,简化编码 反射:将类的各个组成部分封装为其他对象,这就是反射机制 ​ 好处: ​ ...

随机推荐

  1. XSS 与 CSRF 两种跨站攻击

    在前几年,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式, 但是现在参数化查询 已经成了普遍用法,我们已经离 SQL 注入很远了.但是历史同样悠久的 ...

  2. 黄聪:WordPress制作插件中使用wp_enqueue_script('jquery')库不起作用解决方法

    这个应该不是什么新信息,但我却是现在才搞清楚. 今天又是在wordpress调用jquery,情况还是如此.无意中打开wordpress中jquery.js,然后对比code.jquery.com中的 ...

  3. 基于C#的微信公众平台开发系列1

    1.首先服务器地址及Token验证: Token验证请求地址wx.ashx代码: using System; using System.Web; public class wx : IHttpHand ...

  4. word文档批量合并工具

    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; En ...

  5. 通过BeanFactoryPostProcessor来获取bean

    一.现在我们很多时候都在spring的容器中,进行bean的提取和操作,但是配置里面首先需要扫描相应的包来实现相关bean的注入 但是问题来了.如果我们在另外一个线程需要用的时候,并且没有配置扫描该类 ...

  6. 简单神经网络TensorFlow实现

    学习TensorFlow笔记 import tensorflow as tf #定义变量 #Variable 定义张量及shape w1= tf.Variable(tf.random_normal([ ...

  7. python爬虫----基本操作

    一.爬虫基本操作 有些网站和其他网站是有关系(链接),全球的网站就相当于一个蜘蛛网,我们放一只蜘蛛在上面爬,一定能够把网爬个遍.那么如果我们要爬取互联网上内容我们就相当于放一只蜘蛛在上面. 爬虫分为 ...

  8. 83. Remove Duplicates from Sorted List + 82. Remove Duplicates from Sorted List II

    ▶ 删除单链表中的重复元素. ▶ 83. 把重复元素删得只剩一个,如 1 → 1 → 2 → 3 → 3 → 3 → 4 → 5 → 5 变成 1 → 2 → 3 → 4 → 5.注意要点:第一个元素 ...

  9. android手机 ping 虚拟机ubuntu的ip地址

    今天使用android手机往虚拟机上ubuntu 上搭建的nginx 和rtmp服务器推送东西的时候,怎么都推不上去. 后来在windows下的cmd里: # adb shell # ping 192 ...

  10. ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析 转载

    标签: arcgis 杂谈 分类: GISArcGIS中将两个要素类合并成一个要素有Union.Dissolve.Append.Merge等,在Arctoolbox中均有相应工具,但功能上有所不同:U ...