码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的反射总结

时间:2017-08-28 23:43:37      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:logs   getname   函数   ati   member   interface   extend   image   class类   

反射是获取运行时类信息,即常量区中的Class信息。

要获取类信息,必然需要依据,不然系统怎么指定你要获取那个类信息,

类信息在java中就是Class类的一个对象,它是一个java类抽象,换句话说它代表了一个‘类‘(类本身是一种事物的抽象,在程序中它代表了这一事物,Class就是对这种类的一种抽象),

三种获取方式,

1).Class名称的字符串  Class.forName

2).根据Class获取, Integer.class

3).根据对象获取  (new Integer()).getClass

值得一提的是所有的Class对象的class仍然是class

下面来说一下这个Class类,

首先Class实现了Type,Type并没任何函数,是一个空接口,它只是代表这是一个类型

技术分享
package java.lang.reflect;

public interface Type {
}
View Code

另外它实现了AnnotatedElement接口,表示这是一个可以使用注解的元素。

技术分享
package java.lang.reflect;

import java.lang.annotation.Annotation;

public interface AnnotatedElement {

     boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);

    <T extends Annotation> T getAnnotation(Class<T> annotationClass);

    Annotation[] getAnnotations();

    Annotation[] getDeclaredAnnotations();
}
View Code

GenericDeclaration接口,表示这是一个可以被泛型化的元素,该接口获取一个TypeVariable数组,表示泛型参数,TypeVariable实现了Type接口,也就是说泛型的参数也是一个类型

技术分享
package java.lang.reflect;

public interface GenericDeclaration {

    public TypeVariable<?>[] getTypeParameters();
}
View Code

整个类关系如下:

技术分享

Class下聚合了Field(字段),Method(方法),Constructor(构造方法)

这三个成员均继承自Member,也就是反射成员。

技术分享
package java.lang.reflect;

public interface Member {

    public static final int PUBLIC = 0;

    public static final int DECLARED = 1;

    public Class<?> getDeclaringClass();

    public String getName();

    public int getModifiers();

    public boolean isSynthetic();
}
View Code

 

Java中的反射总结

标签:logs   getname   函数   ati   member   interface   extend   image   class类   

原文地址:http://www.cnblogs.com/yangyang12138/p/7442091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!