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);



    }
}
相关推荐
程序员黑豆4 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
风流 少年5 小时前
Spring AI 2.0:Memory
java·后端·spring
码匠许师傅5 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
2603_965148115 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
小席是个热心肠6 小时前
AI相关的自我学习
java·人工智能·学习
知无不研8 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
数智化管理手记8 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
cfm_29148 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
鲸采云SRM采购管理系统9 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
C++ 老炮儿的技术栈10 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐