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



    }
}
相关推荐
techdashen几秒前
Rust 项目管理动态 — 2026 年 2 月
开发语言·后端·rust
布朗克1681 分钟前
28 网络编程——Socket、TCP/UDP与HttpClient
java·网络·tcp/ip·udp
二月夜8 小时前
剖析Java正则表达式回溯问题
java·正则表达式
xuhaoyu_cpp_java9 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
想吃火锅10059 小时前
【leetcode】405.数字转换为十六进制数js
开发语言·javascript·ecmascript
程序员二叉9 小时前
【Java】集合面试全套精讲|HashMap/ArrayList高频考点完整版
java·面试·哈希算法
专注VB编程开发20年9 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
cfm_29149 小时前
JVM GC垃圾回收初步了解
java·开发语言·jvm
心之伊始9 小时前
LangChain4j RAG 实战:Java 后端如何把本地文档接入 Embedding 检索链路
java·架构·源码分析·csdn
~小先生~9 小时前
Python从入门到放弃(一)
开发语言·python