详解java.lang.Class

本文转自:https://www.cnblogs.com/xinhuaxuan/p/6019497.html


一、Class类是什么

        Class是一个类,位于java.lang包下。
  在Java中每个类都有一个相对应的Class类的对象,换句话说:Java程序在启动运行时 一个XXX.java类经过编译生成XXX.class文件后,就会在JVM虚拟机中产生一个XXX类对应的Class类的对象,用于表示这个XXX类的类型信息。

二、Class类常用的方法

        Class类是反射中的核心类,它有如下的方法:
    获取类中的属性:
      - getFields(): 获取类中public类型的属性
      - getField(String name): 获取类特定的方法,name参数指定了属性的名称
      - getDeclaredFields(): 获取类中所有的属性(public、protected、default、private),但不包括继承的属性。
      - getDeclaredField(String name): 获取类特定的方法,name参数指定了属性的名称

    获取类中的构造函数:
      - getConstructors():获取类中的公共方法
      - getConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
      - getDeclaredConstructors(): 获取类中所有的构造方法(public、protected、default、private)
      - getDeclaredConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型

    获取类中的方法:
      - getMethods(): 获得类的public类型的方法
      - getMethod(String name, Class[] params): 获得类的特定方法,name参数指定方法的名字,params参数指定方法的参数类型
      - getDeclaredMethods(): 获取类中所有的方法(public、protected、default、private)
         - getDeclaredMethod(String name, Class[] params): 获得类的特定方法,name参数指定方法的名字,params参数指定方法的参数类型

    其它重要方法:
      - newInstance(): 通过类的不带参数 的构造方法创建这个类的一个对象
      - forName(String className): 获取className参数指定的类的class对象
      - forName(String className,boolean initialize,ClassLoader): 使用指定的类加载器获取className参数指定的类的class对象
      - getClassLoader(): 获取类加载器
      - getName(): 获取类名
      - getPackage(): 获取类所在的包名

三、获取Class对象的三种方法

       第一种: 调用Class类的静态方法forName,比如 Class.forName("java.lang.String")
  第二种: 使用类的.class语法,比如 : Class cls = String.class
  第三种: 调用对象的getClass方法, 比如:String str = "123"; Class cls = str.getClass();
 (PS:在java.lang.Object类中定义了getClass()方法,因此对于任意一个Java对象,都可以通过此方法获得对象的类型)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.lang.NoSuchMethodError是一个运行时错误,表示在运行Java程序时找不到指定的方法。此错误通常发生在使用了不兼容的库版本或存在jar包冲突的情况下。这种情况下,可能在编译时使用了高版本的fastJson库,而在运行时使用了低版本的fastJson库,导致引发该错误。 为了解决这个问题,可以采取以下几个步骤: 1. 确保所有相关项目都使用相同版本的fastJson库。如果多个项目都有fastJson依赖,并且有不同的版本,可以尝试将它们统一为同一个版本。 2. 检查编译和运行时的路径,确保只加载了所需版本的fastJson库。 3. 如果无法解决jar包冲突,可以尝试使用加载器隔离不同版本的fastJson库,以确保每个项目都可以使用其所需的库版本。 通过以上措施,您应该能够解决java.lang.NoSuchMethodError错误,保证代码的正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Java - java.lang.NoSuchMethodError: xxx 错误详解](https://blog.csdn.net/BIT_666/article/details/122111335)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [解决启动Azkaban报错问题:java.lang.NoSuchMethodError: ...](https://download.csdn.net/download/weixin_38735544/12926256)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值