您的位置:首页 > 其它

反射相关类Class接口列表分析

2015-05-12 11:45 519 查看
Class类提供了一组接口,来获取它的实例所表示的类型的信息。这里就对这一组接口根据信息类型层次进行整理,写在下面。

第一类,类层次接口

1. static Class<?> forName(String className):静态方法,用于创建Class类型实例,这里的创建实际上是到JVM中去查找引用,所有的Class对象都是通过类加载器加载到JVM中的。参数字符串是类的完全限定名称,例如String的完全限定名称为java.lang.String,这里使用完全限定名称的原因是,类在JVM中对应的Class对象是用类签名实现的,类签名的构成是:L + "完全限定名称"
+ ";" ,参考文章


反射相关类Class说明

,这个方法不适用于基本数据类型。类是在第一次使用时被类加载器动态加载到JVM中的,如果在调用forName之前并没有使用到className指定的类,这个方法就会启动加载过程,并且初始化类,前提要求是类必须有无参数构造方法,否则就会抛出ClassNotFoundException。

2.String getName() : 获取类的完全限定名称;

3.String getSimpleName() : 获取类名,不带包名;

4.String getCanonicalName() : 获取类的完全限定名称;

5.Class[] getClasses() : 类内部定义的或者基类内部定义的具有public访问权限的内部类列表;

6.Class[] getDeclaredClasses() : 获取类内声明的内部类,不一定是public,不包括基类内部类;

7.Class getDeclaringClass() : 如果当前类为内部类,获取声明内部类的外部类,如果当前类不是内部类,或者当前类是一个数组类或者基本数据类型,返回null;

8.Class getEnclosingClass() :
如果当前类为内部类,获取声明内部类的外部类,如果当前类不是内部类,返回null;

9.Class[] getInterfaces() : 获取类实现的接口列表;

10.Type[] getGenericInterfaces() : 获取当前类直接实现的接口列表,不包括基类实现的接口,也不包括当前类实现接口的上层接口,如果当前类为基本数据类型,或者void类型,返回空列表;

11.Type getGenericSuperClass() : 获取类继承的基类;

12.Class getSuperClass() : 获取类继承的基类;

13.ClassLoader getClassLoader() : 获取类对应的类加载器;

第二类,类型转换的接口

1.<U> Class<? extends U> asSubClass(Class<U> clazz) : Class对象类型转换,把当前Class对象转换为参数Class对象所表示类型的某个子类型Class对象,如果转换失败,抛出ClassCastException。

2.T cast(Object obj) : 普通对象类型转换,把参数对象转换成当前类对象所表示的类型的对象;

第三类,构造方法相关接口,Constructor是一个重要的泛型类,后面会单独讲。

1.Constructor<T> getConstructor(Class<?>... parameterTypes) : 获取带有给定参数类型列表的构造函数,如果没有,抛出NoSuchMethodException;

2.Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) :

3.Constructor[] getConstructors() :

4.Constructor[] getDeclaredConstructors() :

5.Constructor<?> getEnclosingConstructor()

第四类,方法相关的接口,Method是一个重要的反射类,后面会单独分析。

1.Method getMethod(String name, Class<?>... parameterTypes) : 从当前类所在的继承结构中查找方法;

2.Method getDeclaredMethod(String name, Class<?>... parameterTypes) :从当前类的定义中查找方法,不包括基类中定义的方法;

3.Method[] getMethods() : 从当前类所在的继承结构中获取所有方法列表;

4.Method[] getDeclaredMethods() : 从当前类的定义中获取方法列表,不包括基类中定义的方法;

5.Method getEnclosingMethod()

第五类,成员相关的接口,Field是一个重要的反射类,后面会单独分析。

1.Field getField(String name)

2.Field getDeclaredField(String name) : 这里Declared的意思,已经明了了吧。

3.Field[] getFields()

4.Field[] getDeclaredField()

第六类,注释相关的接口

1. <A extends Annotation> getAnnotation(Class<A> annotationClass)

2. Annotation[] getAnnotations()

3. Annotation[] getDeclaredAnnotations()

其他接口

1.T[] getEnumConstants()

2.Package getPackage()

3.TypeVariable<Class<T>> getTypeParameters()

4.boolean isAnonymousClass() : 是否为匿名类;

5.boolean isAnnotation() : 是否为注释类;

6.boolean isAnnotationPresent(Class<? extends Annotation> clazz) : 是否有某类注释;

7.boolean isInstance(Object obj) : 判断某对象是否为当前类型

8.boolean isEnum()

9.boolean isArray()

10. boolean isInterface()

11. boolean isLocalClass()

12. boolean isPrimitive() : 是否为基本数据类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: