• 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()
      将对象转换为字符串。

  • 相关阅读:
    STM32 F4 DAC DMA Waveform Generator
    STM32 F4 General-purpose Timers for Periodic Interrupts
    Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
    Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
    查看SQL Server服务运行帐户和SQL Server的所有注册表项
    Pycharm使用技巧(转载)
    SQL Server 2014内存优化表的使用场景
    Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用 optparse argparse
    Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
    Python第六天 类型转换
  • 原文地址:https://www.cnblogs.com/aston/p/9383013.html
Copyright © 2020-2023  润新知