zoukankan      html  css  js  c++  java
  • Java反射——java.lang.Class 类简介

    Java的基本思想之一是万事万物即对象,类也是一种对象。但是类是什么对象呢?Java中的类是java.lang.Class的实例化对象,这被成为类类型。

    //java.lang.Class类中的的主要方法如下

    下面是Java1.8 API中java.lang.Class类中的方法:

    va.lang中Class Class <T>
    java.lang.Object继承的java.lang.Class<T>
    类型参数:
      T - 由此Class对象建模的类的类型。 例如,String.class的类型是Class <String>。 如果正在建模的类未知,请使用Class <?>。

    所有已实现的接口:
      Serializable,AnnotatedElement,GenericDeclaration,Type

    类定义
      public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement

    类Class的实例表示正在运行的Java应用程序中的类和接口。 枚举是一种类,注释是一种接口。 每个数组也属于一个类,它反映为一个Class对象,由具有相同元素类型和维数的所有数组共享。 原始Java类型(boolean,byte,char,short,int,long,float和double)以及关键字void也表示为Class对象。

    类没有公共构造函数。 相反,类对象由Java虚拟机在加载类时自动构造,并通过调用类加载器中的defineClass方法。

    以下示例使用Class对象来打印对象的类名:
      void printClassName(Object obj) {
        System.out.println("The class of " + obj +
        " is " + obj.getClass().getName());
      }

    也可以使用类文字获取命名类型(或void)的Class对象。 请参阅Java™语言规范的第15.8.2节。 例如:
      System.out.println("The name of class Foo is: "+Foo.class.getName());


    方法摘要:
    修饰符和类型 方法和描述
    <U> Class<? extends U> asSubclass(Class<U> clazz)
      转换此Class对象以表示由指定的类对象表示的类的子类。

    T cast(Object obj)
      将对象强制转换为此Class对象所表示的类或接口。

    boolean desiredAssertionStatus()
      如果要在调用此方法时初始化,则返回将分配给此类的断言状态。

    static Class<?> forName(String className)
      返回与具有给定字符串名称的类或接口关联的Class对象。

    static Class <?> forName(String name,boolean initialize,ClassLoader loader)
      使用给定的类加载器返回与具有给定字符串名称的类或接口关联的Class对象。

    AnnotatedType[] getAnnotatedInterfaces()
      返回AnnotatedType对象的数组,这些对象表示使用类型来指定此Class对象所表示的实体的超接口。

    AnnotatedType getAnnotatedSuperclass()
      返回AnnotatedType对象,该对象表示使用类型来指定此Class对象所表示的实体的超类。

    <A extends Annotation> A getAnnotation(Class<A> annotationClass)
      如果存在这样的注释,则返回指定类型的此元素的注释,否则返回null。

    Annotation[] getAnnotations()
      返回此元素上存在的注释。

    <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
      返回与此元素关联的注释。

    String getCanonicalName()
      返回Java语言规范定义的基础类的规范名称。

    Class<?>[] getClasses()
      返回一个数组,其中包含Class对象,这些对象表示作为此Class对象所表示的类的成员的所有公共类和接口。

    ClassLoader getClassLoader()
      返回类的类加载器。

    Class<?> getComponentType()
      返回表示数组的组件类型的Class。

    Constructor<T> getConstructor(Class<?>... parameterTypes)
      返回一个Constructor对象,该对象反映此Class对象所表示的类的指定公共构造函数。

    Constructor<?>[] getConstructors()
      返回一个包含Constructor对象的数组,这些对象反映此Class对象所表示的类的所有公共构造函数。

    <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
      如果直接存在这样的注释,则返回指定类型的此元素的注释,否则返回null。

    Annotation[] getDeclaredAnnotations()
      返回直接出现在此元素上的注释。

    <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
      如果此类注释直接存在或间接存在,则返回指定类型的此元素的注释。

    Class<?>[] getDeclaredClasses()
      返回Class对象的数组,这些对象反映声明为此Class对象所表示的类的成员的所有类和接口。

    Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
      返回一个Constructor对象,该对象反映此Class对象所表示的类或接口的指定构造函数。

    Constructor<?>[] getDeclaredConstructors()
      返回Constructor对象的数组,这些对象反映由此Class对象表示的类声明的所有构造函数。

    Field getDeclaredField(String name)
      返回一个Field对象,该对象反映此Class对象所表示的类或接口的指定声明字段。

    Field[] getDeclaredFields()
      返回Field对象的数组,这些对象反映由此Class对象表示的类或接口声明的所有字段。

    Method getDeclaredMethod(String name, Class<?>... parameterTypes)
      返回一个Method对象,该对象反映此Class对象所表示的类或接口的指定声明方法。

    Method[] getDeclaredMethods()
      返回一个数组,其中包含反映此Class对象所表示的类或接口的所有声明方法的Method对象,包括public,protected,default(包)访问和私有方法,但不包括继承的方法。

    Class<?> getDeclaringClass()
      如果此Class对象表示的类或接口是另一个类的成员,则返回表示声明它的类的Class对象。

    Class<?> getEnclosingClass()
      返回基础类的直接封闭类。

    Constructor<?> getEnclosingConstructor()
      如果此Class对象表示构造函数中的本地或匿名类,则返回一个Constructor对象,该对象表示基础类的直接封闭构造函数。

    Method getEnclosingMethod()
      如果此Class对象表示方法中的本地或匿名类,则返回表示基础类的直接封闭方法的Method对象。

    T[] getEnumConstants()
      返回此枚举类的元素,如果此Class对象不表示枚举类型,则返回null。

    Field getField(String name)
      返回一个Field对象,该对象反映此Class对象所表示的类或接口的指定公共成员字段。

    Field[] getFields()
      返回一个包含Field对象的数组,这些对象反映此Class对象所表示的类或接口的所有可访问公共字段。

    Type[] getGenericInterfaces()
      返回表示由此对象表示的类或接口直接实现的接口的Types。

    Type getGenericSuperclass()
      返回表示此Class表示的实体(类,接口,基本类型或void)的直接超类的Type。

    Class<?>[] getInterfaces()
      确定由此对象表示的类或接口实现的接口。

    Method getMethod(String name, Class<?>... parameterTypes)
      返回一个Method对象,该对象反映此Class对象所表示的类或接口的指定公共成员方法。

    Method[] getMethods()
      返回一个包含Method对象的数组,这些对象反映此Class对象所表示的类或接口的所有公共方法,包括由类或接口声明的那些以及从超类和超接口继承的那些。

    int getModifiers()
      返回此类或接口的Java语言修饰符,以整数编码。

    String getName()
      以String形式返回此Class对象表示的实体名称(类,接口,数组类,基本类型或void)。

    Package getPackage()
      获取此类的包。

    ProtectionDomain getProtectionDomain()
      返回此类的ProtectionDomain。

    URL getResource(String name)
      查找具有给定名称的资源。

    InputStream getResourceAsStream(String name)
      查找具有给定名称的资源。

    Object[] getSigners()
      获取此类的签名者。

    String getSimpleName()
      返回源代码中给出的基础类的简单名称。

    Class<? super T> getSuperclass()
      返回表示此Class表示的实体(类,接口,基本类型或void)的超类的Class。

    String getTypeName()
      返回此类型名称的信息字符串。

    TypeVariable<Class<T>>[] getTypeParameters()
      返回TypeVariable对象的数组,这些对象表示由此GenericDeclaration对象以声明顺序表示的泛型声明声明的类型变量。

    boolean isAnnotation()
      如果此Class对象表示注释类型,则返回true。boolean isAnnotationPresent(Class <?extends Annotation> annotationClass)如果此元素上存在指定类型的注释,则返回true,否则返回false。

    boolean isAnonymousClass()
      当且仅当基础类是匿名类时返回true。

    boolean isArray()
      确定此Class对象是否表示数组类。

    boolean isAssignableFrom(Class<?> cls)
      确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是它们的超类或超接口。

    boolean isEnum()
      当且仅当此类在源代码中声明为枚举时返回true。

    boolean isInstance(Object obj)
      确定指定的Object是否与此Class表示的对象分配兼容。

    boolean isInterface()
      确定指定的Class对象是否表示接口类型。

    boolean isLocalClass()
      当且仅当基础类是本地类时返回true。

    boolean isMemberClass()
      当且仅当底层类是成员类时返回true。

    boolean isPrimitive()
      确定指定的Class对象是否表示基本类型。

    boolean isSynthetic()
      如果此类是合成类,则返回true; 否则返回false。

    T newInstance()
      创建此Class对象表示的类的新实例。

    String toGenericString()
      返回描述此Class的字符串,包括有关修饰符和类型参数的信息。

    String toString()
      将对象转换为字符串。

  • 相关阅读:
    猪猪的机器学习笔记(八)聚类
    猪猪的机器学习笔记(七)最大熵模型
    猪猪的机器学习笔记(九)推荐系统
    标签button:点击button按钮时,出现了页面自动刷新的情况
    SQL案例
    SQL学习记录:函数(二)
    SQL学习记录:定义(一)
    C# 后台报错输出到日志
    DateTime 时间类型总结(前端)
    笛卡尔积的使用
  • 原文地址:https://www.cnblogs.com/aston/p/9383013.html
Copyright © 2011-2022 走看看