关键词搜索

源码搜索 ×
×

一篇文章带你搞定 Java 中的 Class 类

发布2020-02-20浏览551次

详情内容

正确情况下如果已经有一个类,则肯定可以通过类创建对象;那么如果现在要求通过一个对象找到一个类的名称,此时就需要用到反射机制

反射操作的核心概念:一切的操作都将使用 Object完成,类、数组的引用都可以使用Object 进行接收

一、认识 Class 类

在这里插入图片描述
从 Source 源代码阶段到 Runtime 运行阶段,需要借助类加载器将其加载进内存

正常情况下,需要先有一个类的完整路径引入后才可以按照固定的格式产生实例化对象,但是在 Java 中也允许通过一个实例化对象找到一个类的完整信息,这就是 Class 的功能。

package org.lxh.test;
class X{
}
public class GetClassDemo {
    public static void main(String[] args) {
        X x = new X();//实例化 X 类的对象
        System.out.println(x.getClass().getName());//得到对象所在的类
    }
}

    在这里插入图片描述
    结果显示通过一个对象得到了对象所在的完整的名称。
    这里的 getClass()方法是 Object 类的,因为任何一个类如果没有明确地声明继承自那个父类时,会默认继承 Object 类,方法的定义:

    public final Class getClass()
    
    • 1

    这里也就是通过 Object 类中getClass()方法实例

    这里返回值的类型是一个 Class 类,实际上此类是 Java反射的源头。
    在这里插入图片描述
    所有类的对象实际上都是 Class 类的实例深入理解

    在 Java 中 Object 类是一切类的父类,那么所有类的对象实际上也就都是 java.lang.Class 类的实例,所以所有的对象都可以转变为 java.lang.Class 类型表示

    二、Class 类的常用方法

    Class 本身表示一个类的本身,通过Class可以完整地得到一个类中的完整结构,包括此类中的方法定义、属性定义等。
    在这里插入图片描述

    package org.lxh.test;
    class X{
    }
    public class GetClassDemo {
        public static void main(String[] args) {
           Class<?> c1 = null;//指定泛型
           Class<?> c2 = null;//指定泛型
           Class<?> c3 = null;//指定泛型
            try{
                c1 = Class.forName("org.lxh.test.X");//最常用的形式
            }catch (ClassNotFoundException e){
                e.printStackTrace();
            }
            X x = new X();//实例化对象
            c2 = x.getClass();//通过 Object 类中方法实例
            c3 = X.class;//通过类.class实例化
            System.out.println("类名称:" + c1.getName());//得到类的名称
            System.out.println("类名称:" + c2.getName());
            System.out.println("类名称:" + c3.getName());
        }
    }
    
    
      10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述
    使用 forName() 方法更加具备灵活性
    在这里插入图片描述

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载