栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

获取Class类对象

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取Class类对象

拥有Class对象的类
  1. 外部类、成员内部类、静态内部类、局部内部类、匿名内部类
  2. interface:接口
  3. 数组
  4. enum:枚举
  5. annotation:注解
  6. 基本数据类型
  7. void
获取方式
  1. 前提:已知一个类的全类名,且该类在类路径下,可通过 Class 类的静态方法 forName()获取,可能抛出异常 ClassNotFoundException
    应用场景:多用于配置文件,读取类全路径,加载类
  2. 前提:若已知具体的类,通过类的 class 获取(例如String类的Class对象就是 String.class),该方式最为可靠,程序性能最高
    应用场景:多用于参数传递,比如通过反射得到对应构造器对象
  3. 前提:已知某个类的实例,调用该实例的 getClass()方法获取Class对象
    应用场景:通过创建的对象,获取Class对象
  4. 通过类加载器加载Class类对象
    ClassLoader cls = 对象.getClass().getClassLoader();
    Class cls01 = cls.loadClass(“类的全类名”);
  5. 基本数据类型(int、char、boolean、float、double、byte、short、long),按如下方式得到 Class 类对象
    Class cls = 基本数据类型.class
  6. 基本数据类型的包装类,可以通过 .TYPE 得到Class对象
    Class cls = 包装类.TYPE
package com.ftn.reflection.class_;

import com.ftn.Car;

//演示得到Class对象的方式
public class GetClass_ {
    public static void main(String[] args) throws Exception {
        //1.Class.forName
        String classPath = "com.ftn.Car";   //通过配置文件读取
        Class cls = Class.forName(classPath);
        System.out.println(cls);

        //2.类名.class,应用场景:参数传递
        Class cls2 = Car.class;
        System.out.println(cls2);

        //3.对象.getclass(),应用场景:已有对象实例
        Car car = new Car();
        Class cls3 = car.getClass();
        System.out.println(cls3);

        //4.通过类加载器(四种)来获取到类的Class对象
        //(1)先得到类加载器 car
        ClassLoader classLoader = car.getClass().getClassLoader();
        //(2)通过类加载器得到 Class对象
        Class cls4 = classLoader.loadClass(classPath);
        System.out.println(cls4);

        //cls1cls2cls3cls4 其实是同一个对象
        System.out.println(cls.hashCode());
        System.out.println(cls2.hashCode());
        System.out.println(cls3.hashCode());
        System.out.println(cls4.hashCode());
        
        //5.基本数据类型(int,char,boolean,float,double,byte,long,short),按如下方式得到Class类对象
        Class integerClass = int.class;
        Class characterClass = char.class;
        System.out.println(integerClass);   //自动拆箱

        //6.基本数据类型对应的包装类,可以通过  .TYPE  得到Class类对象
        Class type = Integer.TYPE;
        System.out.println(type);

        System.out.println(type.hashCode());
        System.out.println(integerClass.hashCode());
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号