Java基础知识点__了解Class类

Java中的Class类 Class类的作用 Class类是一个特殊类,它用于表示JVM运行时类或接口的信息。 Class类提供很多方法用于获取类的各种信息,比如获取类名、判断该类是否是一个接口还是普通类等等。 在Java中枚举类是一种类,而注解是一个接口,数组也是一个类;Java原始类型(boolean, byte, char, short, int, long, float, and double)和关键字void也被表示为Class的对象。 你知道吗? 在每一个基本类型的包装类中都有一个共有的静态变量,例如Integer: 阅读详情

Class类的常用的方法

反射的操作涉及到了Class类的相关内容,所以我们这边先大致的了解一下Class类的常用的方法

方法名功能说明
static ClassforName(String name)返回指定类名name的Class对象
Object newInstance()调用缺省构造函数,返回一个Class对象的一个实例
getName()返回此Class对象所表示的尸体(类,接口,数组类或void)的名称
Class getSuperClass()返回当前Class对象的父类的Class对象
Class[] getinterfaces()返回该类的类加载器
ClassLoader getClassLoader()返回一个包含某些Constructor对象数组
Method getMothed(String name, Class… T)返回一个Method对象,此对象的形参类型为paramType
Fied [] getDelaredFields()返回Fueld对象数组
package com.linke;

public class reflection {
    public static void main(String[] args) throws ClassNotFoundException {
        Persin persin = new Student();
        System.out.println("这个人是"+ persin.name);
        //方式一 通过对象获得
        Class aClass = persin.getClass();
        System.out.println(aClass.hashCode());

        //方式二  通过forName方法获得
        Class bClass = Class.forName("com.linke.Student");
        System.out.println(bClass.hashCode());

        //方式三  通过类名.class获得
        Class<Student> cClass = Student.class;
        System.out.println(cClass.hashCode());

        //方式四  基本内置类型的包装类都有一个Type属性
        Class dClass = Integer.TYPE;
        System.out.println(dClass);

        //获取父类类型
        Class superClass = aClass.getSuperclass();
        System.out.println(superClass.getName());
    }
}

class Persin {

    public String name;

    public Persin() {
    }

    public Persin(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Persin{" +
                "name='" + name + '\'' +
                '}';
    }
}

class Student extends  Persin{
    public  Student(){
        this.name = "学生";
    }
}

class  Teacher extends  Persin{
    public Teacher(){
        this.name = "老师";
    }
}

那些类型可以有Class对象

  1. class: 外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类,
  2. 接口: interface
  3. 数组: []
  4. 枚举:ennum
  5. 注解:annotation
  6. 基本数据类型:primitice type
  7. void
import java.lang.annotation.ElementType;

/**
 * 所有类型的Class
 */
public class AllClassDemo {

    public static void main(String[] args) {

        //类
        Class objectClass  = Object.class;
        //接口
        Class comparable = Comparable.class;
        //一维数组
        Class stringClass = String[].class;
        //二维数组
        Class  intClass = int[][].class;
        //注解
        Class overrideClass = Override.class;
        //枚举
        Class elementTypeClass = ElementType.class;
        //基本数据类型
        Class integerClass = Integer.class;
        //void
        Class voidClass =  void.class;
        //Class
        Class classClass = Class.class;

        System.out.println(objectClass);
        System.out.println(comparable);
        System.out.println(stringClass);
        System.out.println(intClass);
        System.out.println(overrideClass);
        System.out.println(elementTypeClass);
        System.out.println(integerClass);
        System.out.println(voidClass);
        System.out.println(classClass);
        
    }
}

类的价值和ClassLoader的理解

在这里插入图片描述
在这里插入图片描述

加载:将class文件字节码内容加载到内存中,并将这些静态数据转变 成 发去的运行时数据,然后生成一个代表这个类的java.lang.Class对象
链接: 将Java类的二进制代码合并到JVM的运行状态之中的过程

  • 验证:确保加载的类信息符合JVM规范,没有安全方面的问题
  • 准备:正式为类变量(static)分配内存并设置类变量默认初始值的阶段你呢,这些内存都将在 发去中进行分配
  • 解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程

初始化:

  • 执行类构造器()方法的过程。类构造器()方法是由编译器自动收集类中所以类变量的赋值动作和静态代码中的语句合并产生的(类构造器是构造类信息的,不是构造该类对象的构造器)
  • 当初始化一个类的时候,如果发现其他父类还没有进行初始化,则需要先触发其父类的初始化
  • 虚拟机保证一个类的()方法在多线程环境中被正确加锁和同步

什么时候会发生类的初始化

类的主动引用(一定会发生类的初始化)

  • 当虚拟机启动,先初始化main方法所在的类
  • new 一个类的对象
  • 调用类的静态成员(除了final常量)和静态方法
  • 使用java.lang.reflect包的方法对类进行反射调用

类的被动引用(不会发生类的初始化)

  • 当访问一个静态域时,只有正在声明这个域才会被初始化,如:当通过子类引用父类的静态变量,不会导致子类初始化
  • 通过数组定义类引用,不会触发此类的初始化: 比如 Student [] = new Student[1]
  • 引用常量不会初始化此类的初始化(常量在链接阶段就存入调用类的常量池中了)
Java反射(Class类)常用方法(附Xmind整理) 文章目录一、获取Class对象的方式1、Class.forName("全类名")2、类名.class3、对象.getClass()二、常用方法:1、获取构造方法、成员方法、成员变量(公开的public)2、获取构造方法、成员方法、成员变量(所有的public+private)3、获取名称4、获取父接口5、获取实现的接口6、实例化为新对象7、返回此元素上存在的所有注释8、返回此类的包(package com.lydms.classes)9、查找带有给定名称的资源(打印绝对路径)10、判断类型三、案例1、获取对 阅读详情

相关推荐

Java中通过Class类获取Class对象的方法详解

主要给大家介绍了关于Java中通过Class类获取Class对象的方法,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

java的class用法_Java中Class类详解、用法及泛化

Java中Class类及用法Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。说白了就是:Class类也是类的一种,只是名字和class关键字高...

weixin_42638178的博客 1197

Cadence Allegro 17.4学习记录开始01-原理图Capture CIS 17.4

Orcad的学习记录

qq_31444421的博客 1万+

java中的反射及Class对象常用方法介绍

介绍 有一个有意思的小实验,有一盆水,在盆中放上镜子,放到阳光下,镜子反射到墙面的光变成了彩虹。通过反射,可以知道光是由七种颜色组成的。 java中的反射又叫内省或者自省,简单来说就是知道自己身上有什么东西。我们知道一个类有自己的继承体系,由构造器、方法和字段组成,jdk1.5之后加入了注解。所以这些东西都能通过反射拿到。 Java中跟反射有关的类有:Class、Constructor、Method、Filed。下面介绍这四个类中经常使用的方法。 Class对象 Class对象是由java虚拟机创建的,当我

weixin_45341408的博客 1092

Qt开发中彻底解决中文乱码问题

中文乱码问题主要源于编码不一致需要同时设置控制台和Qt应用程序的编码确保项目文件和环境配置的编码一致文件操作时注意指定正确的编码。

qq_53832058的博客 3404

SuperMap iObjects Java组件开发——环境部署(IntelliJ IDEA)

SuperMap iObjects Java 是面向GIS应用系统开发者的组件式GIS开发平台,具有强大的地理数据管理、编辑、显示、分析等功能,并且其具有极强的易用性和丰富的帮助资源,适宜快速开发大型GIS应用系统。本文将介绍如何在IntelliJ IDEA集成开发环境中进行SuperMap iObjects Java组件的环境部署。

nan620403的博客 1081

java中Class类常用方法汇总

Class类常用方法 下面列举了Class类的一些常用方法,这些方法常常会被频繁地使用。 Field[] getFields() 返回一个包含Field对象的数组,存放该类或接口的所有可访问公共属性(含继承的公共属性)。 Field[] getDeclaredFields() 返回一个包含Field对象的数组,存放该类或接口的所有属性(不含继承的属性)。 Field getField(String name) 返回一个指定公共属性名的Field对象。 Method[] getMethods()

weixin_44081096的博客 2638

Uni-App 使用极光推送完整指南

Uni-App集成极光推送的完整指南:从注册极光账号到代码实现。包含前期准备(获取AppKey、注册厂商账号)、Uni-App配置(插件导入、初始化代码)、高级功能(角标设置、Java后台接口)及常见问题排查。详细说明了推送监听、registrationID获取、消息接收处理等核心功能实现步骤,并提供两种推送接口示例(按平台推送和统一推送)。适合需要在Uni-App项目中实现推送功能的开发者参考。

cyj0919的博客 425

反射

什么是反射 反射是用来获取指定Class文件中的属性及方法的 反射的重要性:在我们后面的框架写工程的情况下,我们拿到的都是第三方的Jar包,我们不直到里面都有哪些属性和方法,所以就需要我们的反射,把里面的属性和方法反射出来供我们使用 所有的Class文件也是类型,是个Class类 反射怎么使用 我们能获取到该类中私有的,或者是所有的包括私有公共的的方法,属性和构造器,我们来看一下代码 public static void reflexMethod03() throws ClassNotFoundExcept

HeDashuaithan的博客 317

C#怼倍福TwinCAT3:ADS协议封装实战(附完整读写源码+避坑清单)

变量名大小写敏感:PLC里定义的是GVL.bStart,你写GVL.BStart绝对读不到;数组访问格式:PLC数组是,C#里读单个元素要写,读整个数组不用写索引;句柄要释放:用创建的句柄,一定要用using包起来,否则会占着资源;PLC必须运行:哪怕变量定义对了,PLC没Run(只是Login)也读不到数据;路由配置:如果上位机和PLC不在一个网段,要在TwinCAT3里添加路由(Router→Edit Routes)。倍福ADS通信其实不难,核心就是“配置对+变量名写对+数据类型匹配”。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 949

YOLOv11的对比学习预训练改进-(通过SimCLR预训练增强特征提取)

本文介绍了将SimCLR对比学习预训练与YOLOv11目标检测模型相结合的创新方法。文章首先概述了目标检测领域的发展现状和YOLOv11的架构优化,包括主干网络、特征金字塔和检测头的改进设计。其次详细解析了SimCLR对比学习的核心原理,涵盖数据增强、投影头设计和NT-Xent损失函数。最后探讨了如何将对比学习与目标检测有效结合,通过特征空间对齐和渐进式微调策略提升模型性能。该方法显著增强了特征提取能力,提高了检测精度和训练效率,特别是在小目标和遮挡目标的检测上表现突出。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 685

java 反射机制_这是一份超全面详细的Java反射机制学习指南

Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。很多千锋的学员在面试中都会被问到Java反射机制这个问题,为了帮助大家更好的掌握这个知识点,千锋武汉Java培训小编整理了一些资料分享给大家。一、反射概念在正式讲解反射之前,为了很好的去理解它我们先从一个案例说起。请看下面的代码:这是一个最简单不过的类,当我们使用的时候直接new出来一个User对象即可。因为这...

weixin_39967598的博客 78

YOLO26训练教程,训练自己的数据集教学,从源码下载,配置虚拟环境,准备数据集、训练、验证、推理测试 。实现0到1的完整教学过程。快速入门必看

本文详细介绍了YOLO26目标检测模型的配置与使用流程:1)下载YOLOv11源码并创建Python3.10虚拟环境;2)安装PyTorch2.5.1及相关依赖库;3)准备数据集并修改配置文件;4)编写训练脚本设置参数(640x640分辨率、500轮次);5)验证模型效果;6)使用训练好的模型进行推理测试;7)生成可视化热力图。整个过程涵盖了从环境搭建到模型应用的全流程,并提供了清华镜像源加速下载。

Ai缝合怪、助力小伙伴高效发论文 5279

Java 基础

错题: 1. 2. 一个java源程序经过成功编译之后,可能得到多个class文件 因为一个源程序可以包含很多类,编译后会生成对应的多个class文件 3. Java的类名没有强调首字母大写,因而小写是可以编译通过的 但是一般约定小写的是变量名,类名大写是约定俗成的 准则 4. 任何一个java类都能用java来运行 ...

m0_51952128的博客 256

wireshark提取视频数据之RTP包中提取H264和H265

本文主要描述从wireshark包数据中提取出H264和H265裸流数据方法,裸流通过RTP封包方式发送,从抓包中直接提取视频流数据,进而进行流媒体问题定位

技术控的笔记 17万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

简单了解class类

方法名:实例类.getClass()方法参数:null返回类型:Class<?

owerm的博客 1594

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java中每个类都有个Class对象,那Class类有自己的Class对象吗?

Java 的 Class 类是一个强大的工具,它不仅为每个类提供了元数据,而且自身也遵循了这一规则,拥有自己的 Class 对象。下次当你在使用反射或者处理类相关的操作时,不妨想一想这个 Class 类的 Class 对象,它可能会给你带来新的编程灵感。这个 Class 对象,就像是每个类的身份证,记录着类的名字、属性、方法等信息。这意味着,Class 类自身也是一个类,按照 Java 的规则,它也应该有一个 Class 对象。是的,你没看错,Class 类有一个自己的 Class 对象,它就是。

龚小帅的博客 894

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Class类

Class类存在于java.lang包下,Class类的实例表示Java运行时的类(class and enum)或接口(interface and annotation),数组也同样被映射为一个Class对象,所有具有相同元素类型和维数的数组都共享该class对象,基本数据类型和void关键字同样表现为class对象Class的特点:Class类也是类的一种,与class关键字不一样(平时描述中也要区分Class和class的区别)

杰尼龟的小龟壳的博客 1054

夯实Java基础系列9:深入理解Class类和Object类

本文对java的Class类和Object类的概念和原理做了详尽的介绍,并且详细介绍了Object的各种方法,以及这两个类之间的关系。 Class类和Object类是Java中最根本最重要的两个类,理解它们是理解Java面向对象技术的基础,也是学习所有进阶Java技术的基石。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首...

Java技术江湖 5060

吃透Java基础五:Class类和Object类

在Java的世界里,一切皆是对象,所有的对象都是继承于Object类,而记录对象的类型的信息是由Class类来完成的,下面就让我们来具体了解一下Class类和Object类。 一:Class类 每个类的运行时的类型信息就是用Class对象表示的,它包含了与类有关的信息,其实我们的实例对象就通过Class对象来创建的。Java使用Class对象执行其RTTI(运行时类型识别,Run-Time Typ...

吃透Java 1955

java之Class类

Class类也是一个Java类,它也可以实例化得到对象,与普通类不一样的是Class类中存储的是其它类的类型信息。位于java.lang包。 声明: public final class Class<T>implements java.io.Serializable, java.lang.reflect.GenericDeclaration,java.lang.reflect.Type,java.lang.reflect.AnnotatedElement class类有final 修饰.

深海微澜 4037

JAVA中类、实例与Class对象

类 类是面向对象编程语言的一个重要概念,它是对一项事物的抽象概括,可以包含该事物的一些属性定义,以及操作属性的方法。面向对象编程中,我们都是以类来编码。 实例 简单理解,就是new,就是对类的实例化,创建这个类对应的实际对象,类只是对事物的描述,而实例化就相当于为这个描述新开辟了一块内存,可以改变这块区域里的各种属性(成员变量),当然,也可以实例化多块区域,只是不同的对象而...

u010325193的博客 2156

Java之Class类&面向对象

static 关键字不能修饰局部变量。

SOS_suyan的博客 2014

Java基础汇总(五)——Class类、Object类、异常

Java八股,Java基础

weixin_45864705的博客 1742

【Java 基础篇】Java反射:深入了解Class对象

反射是一种机制,允许我们在运行时检查、获取和操作类的信息,包括类的字段、方法、构造函数等。Java反射机制提供了一种能力,使我们能够在运行时检查和操作类,而不需要在编译时知道类的具体信息。这种机制为Java提供了更大的灵活性和动态性。反射的主要类在包中,其中最重要的类就是Class类。Class类代表了类的元信息,允许我们获取类的各种信息,包括字段、方法、构造函数等。让我们深入了解如何使用Class类以及Java反射的核心概念。Java反射是一项强大的功能,允许我们在运行时动态地获取和操作类的信息。通过。

繁依Fanyi的博客 1930

java class类详解

这种方式在编译时就会受到检查(因此不需要置于try语句块中),不仅可以应用于普通的类,也可以应用于接口、数组及基本数据类型。时会判断类是否已经加载,没有加载则会调用类加载器来加载类,已经加载过了,不会重复加载。在这个类的字节码被加载时,它们会接受验证,以确保其没有被破坏,并且不包含不良。当程序创建第一个对类的静态成员的引用时,就会加载这个类。如果尚未加载,默认的类加载器就会根据类的全限定名查找。创建类对象的时候也会被当作对类的静态成员的引用。代码块只会在第一次加载类的时候被调用,由输出结果得知,

jacklin_01的博客 6088
上一篇: Java基本知识点_初步认识反射
下一篇: Java基础__类加载器
Java-X
博客等级 码龄10年 4粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值