Java--获取 Class 类对象

1.前提:已知一个类的全类名,且该类在类路径下,可通过 Class 类的静态方法 forName() 获取,可能抛出 ClassNotFoundException,实例:Class cls1 = Class.forName("java.lang.Cat");

应用场景:多用于配置文件,读取类全路径,加载类

java 复制代码
package com.heima.Hello.reflection.class_;

/**
 * 演示得到 Class 对象的多种方式
 */
public class GetClass_ {
    public static void main(String[] args) throws ClassNotFoundException {
        // 1. Class.forName()
        String classAllPath = "com.heima.hello.Car";  // 通过读取配置文件获取
        Class<?> cls1 = Class.forName(classAllPath);
        
    }
}

2**.前提:若已知具体的类,通过类的 class 获取,该方式最为安全可靠,程序性能最高实例:Class cls2 = Cat.class;**

应用场景:多用于参数传递,比如通过反射得到对应构造器对象

java 复制代码
package com.heima.Hello.reflection.class_;

import com.heima.Hello.Car;

/**
 * 演示得到 Class 对象的多种方式
 */
public class GetClass_ {
    public static void main(String[] args) throws ClassNotFoundException {
      

        // 2. 类名.class,多用于参数传递
        Class cls2 = Car.class;
        System.out.println(cls2);
    }
}

3.前提:已知某个类的实例,调用该实例的 getClass() 方法获取 Class 对象,实例:Class clazz = 对象.getClass();// 运行类型

应用场景:通过创建好的对象,获取 Class 对象

java 复制代码
package com.heima.Hello.reflection.class_;

import com.heima.Hello.Car;

/**
 * 演示得到 Class 对象的多种方式
 */
public class GetClass_ {
    public static void main(String[] args) throws ClassNotFoundException {
       
        // 3. 对象.getClass(),应用场景,有对象实例
        Car car = new Car();
        Class cls3 = car.getClass();
        System.out.println(cls3);
        
    }
}

4.其他方式

ClassLoader cl = 对象.getClass().getClassLoader();

Class clazz4 = cl.loadClass("类的全类名");

java 复制代码
package com.heima.Hello.reflection.class_;

import com.heima.Hello.Car;

/**
 * 演示得到 Class 对象的多种方式
 */
public class GetClass_ {
    public static void main(String[] args) throws ClassNotFoundException {
        
        // 4. 通过类的加载器来获取到类的 class 对象
        // (1) 先得到类加载器
        ClassLoader classLoader = GetClass_.class.getClassLoader();
        // (2) 通过类加载器得到 Class 对象
        Class cls4 = classLoader.loadClass(classAllPath);
        System.out.println(cls4);

        


    }
}

5. 基本数据(int,char,boolean,float,double,byte,long,short)按如下方式得到 Class 类对象

Class cls = 基本数据类型.class

java 复制代码
package com.heima.Hello.reflection.class_;

import com.heima.Hello.Car;

/**
 * 演示得到 Class 对象的多种方式
 */
public class GetClass_ {
    public static void main(String[] args) throws ClassNotFoundException {
      
        // 5. 基本数据类型按如下方式得到 Class 对象
        Class<Integer> integerClass = int.class;
        Class<Character> characterClass = char.class;
        Class<Boolean> booleanClass = boolean.class;
        System.out.println(integerClass);


    }
}

6.基本数据类型对应的包装类,可以通过.TYPE 得到 Class 类对象

java 复制代码
package com.heima.Hello.reflection.class_;

import com.heima.Hello.Car;

/**
 * 演示得到 Class 对象的多种方式
 */
public class GetClass_ {
    public static void main(String[] args) throws ClassNotFoundException {
       
        // 6.基本数据类型对应的包装类,可以通过.TYPE得到 Class 类对象
        Class<Integer> type1 = Integer.TYPE;
        Class<Character> type2 = Character.TYPE;
        System.out.println(type1);



    }
}
相关推荐
贫民窟的勇敢爷们5 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
jerryinwuhan5 小时前
基于各城市站点流量的复合功能比较
开发语言·php
AC赳赳老秦5 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主6 小时前
Java基础:list、set、map一遍过
java·开发语言
灵犀学长6 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
南 阳7 小时前
Python从入门到精通day66
开发语言·python
好家伙VCC8 小时前
【无标题】
java
十八旬8 小时前
快速安装ClaudeCode完整指南
开发语言·windows·python·claude
前进的李工8 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain
小碗羊肉8 小时前
【JavaWeb | 第十一篇】文件上传(本地&阿里云OSS)
java·阿里云·servlet