Java常用类:Class类

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

作为一个稀有的Java妹子,所写的所有博客都只是当作自己的笔记,留下证据自己之前是有用心学习的~哈哈哈哈(如果有不对的地方,也请大家指出,不要悄悄咪咪的不告诉我)

Class

1.Class和.class文件

Class是一个类,所有的Java类在项目启动后都会被jvm加载生成一个Class的实例对象,该对象保存在.class文件中,每个类只有一个Class对象,jvm通过该对象获取类的所有信息,通过new关键字创建对象实际上是通过Class反射得到的。

Java是解释型语言,启动后会把.java文件编译成.class文件,每个类都对应一个.class文件,使用反编译工具打开.class文件可以看到自己手动编写的类的所有信息,下图是我使用反编译工具打开一个jar包,打开其中一个.class文件的结果:
在这里插入图片描述
可以看出,jar包中是一些基础类和自己编写的类的.class文件的集合,有了.class文件,就可以实现一次编译,到处运行,因为jvm虚拟机会通过.class文件获取到类信息,通过反射可以执行类中方法。

2.三种方式获取Class实例对象

Class.forName(“类的全路径名”);
类名.class;
对象.getClass();

Class clazz1 = Class.forName("java.lang.String");
Class clazz2 = Object.class;
Object object = new Object();
Class clazz3 = object.getClass();

3.Class的常用方法

//获取指定方法名的方法
public Method getDeclaredMethod(String name, Class<?>... parameterTypes)
//获取所有的方法数组
public Method[] getDeclaredMethods()
//获取所有的公共方法
public Method[] getMethods()
//获取类的全路径名
public String getName()
//获取类名
public String getSimpleName()
//获取所有的属性数组
public Field[] getDeclaredFields()
//获取指定属性名的属性
public Field getDeclaredField(String name)
...还有很多get方法,不一一列举

//判断是否是接口
public native boolean isInterface()
//判断是否是注解类
public boolean isAnnotation()

接下来以下面这个StringDemo类为例子,说明各个方法的使用

public class StringDemo {
    private String name;

    public static void testIsEmpty(){
        String str = "fr";
        System.out.println(str.isEmpty());
    }

    public static void testCompare(){
        String str = "1ABc23";
        System.out.println("123".equals(str));
        System.out.println(str.startsWith("1"));
        System.out.println(str.endsWith("23"));
        System.out.println(str.equalsIgnoreCase("1abc23"));
    }

    public void judgeUserIdentity(String type){
        switch (EnumDemo.getValue(type)){
            case COPPER:
                doSomething0();break;
            case SILVER:
                doSomething1();break;
            case GOLD:
                doSomething2();break;
            case PLATINUM:
                doSomething3();break;
            case DIAMOND:
                doSomething4();break;
        }
    }
    public void doSomething0(){
        System.out.println("COPPER");
    }
    public void doSomething1(){
        System.out.println("SILVER");
    }
    public void doSomething2(){
        System.out.println("GOLD");
    }
    public void doSomething3(){
        System.out.println("PLATINUM");
    }
    public void doSomething4(){
        System.out.println("DIAMOND");
    }
    
}
Class clazz =Class.forName("com.jdk_source_code.demo.util.StringDemo");
System.out.println(clazz.getName());//com.jdk_source_code.demo.util.StringDemo
System.out.println(clazz.getSimpleName());//StringDemo
Method method = clazz.getDeclaredMethod("judgeUserIdentity", String.class);
method.invoke(clazz.newInstance(),"COPPER");//COPPER
System.out.println(clazz.isInterface());//false
System.out.println(clazz.isAnnotation());//false
Method[] methods = clazz.getDeclaredMethods();
for(Method item:methods){
	System.out.println(item);
	}
/**
* public void com.jdk_source_code.demo.util.StringDemo.judgeUserIdentity(java.lang.String)
* public static void com.jdk_source_code.demo.util.StringDemo.testIsEmpty()
* public void com.jdk_source_code.demo.util.StringDemo.doSomething0()
* public void com.jdk_source_code.demo.util.StringDemo.doSomething1()
* public void com.jdk_source_code.demo.util.StringDemo.doSomething2()
* public static void com.jdk_source_code.demo.util.StringDemo.testCompare()
* public void com.jdk_source_code.demo.util.StringDemo.doSomething3()
* public void com.jdk_source_code.demo.util.StringDemo.doSomething4()
*/
PDF.js实现分片加载问题 PDF.js实现分片加载问题。 阅读详情

相关推荐

攻防实战之Confluence后利用

这边管理员密码是密文加密在数据库中,解不开,因此解决的思路是将管理员用户密码修改为已知明文密码的密文(这边不能直接在数据库中添加字段,关系型数据库在单表中添加一条字段可能会出现问题),登录上后台以后,添加用户并加入管理员组,最后将管理员密码还原。Confluence的后利用主要问题在于在Linux中搭建时,默认是Confluence用户权限,如下图所示,而confluence在linux中是没有写权限的,这也就是为什么有些人发现可以执行命令但是shell写不进去。至此admin的密码被改为了123123。

weixin_39251927的博客 2716

Java中class与Class的区别

一.class与Class区别 class是Java中的关键字,如public class Xxx 或者 class Xxx ,在声明Java类时使用。 而Class是一个类。 我们通常认为类是对象的抽象和集合,Class就相当于是对类的抽象和集合。 也可以认为对象是类的实例,类是Class的实例。 二.Class介绍 Class是一个类。如下图,它在java.lang包中。 它的构造函数是private属性,所以我们不能直接new一个Class对象出来,如下图注释段所说: “私有构造函数。只有Java虚

MrYushiwen的博客 9735

Delta机器人:运动学正反解分析

Delta机器人:运动学正反解分析 一、Delta机构简介 Delta机构是并联机构中的一种典型机构,起原始结构如图1所示。Delta机构由R.Clavel 博士在 1985年发明,是现在并联机器人中使用最多的一种,具备了并联机构所特有的优点,负载能力强、效率高、末端执行器精度高、运动惯性小,可以高速稳定运动等。因此在机器人领域获得了越来越广泛的应用。以实现高速、精准、高效的运动。           &n

花洛兮灬 3万+

Java Class类常用方法描述

Java Class类常用方法描述 一 生成Class对象的三种方式   1 Class.forName("全路径名")   2 类名.Class   3实例对象.getClass() 接着看三种方式生成Class对象的区别 package com.shangcg.reflect; /** * * &lt;p&gt; * 三种方式生成Class对象的区别测试 ...

挑水的小和尚的博客 399

百度飞桨EasyDL图像分类:收费口车辆类型自动识别

车辆类型识别在高速收费路口的应用中,场景相对单一且拍摄角度一致,因此首次训练模型效果优异,准确率达到了95%,鉴于市面上的车辆类型不断更新迭代且部分车辆的主要特征也不断发生变化,因此可在模型投入应用后,持续收集模型实际运行过中产生的数据,定期添加数据进行模型迭代,保证模型效果。企业将AI模型应用到实际场景中以实现停车费用、过路费用的自动计算,在收费口中由相机对每个车辆进行拍摄,拍摄到的图片传输到预测设备上进行类型识别,基于识别出来的车辆类型自动进行费用计算。该功能可在发起训练时选选择对应的开关打开即可。..

PaddlePaddle 1670

细说VLAN之untag和tag

一、拓扑图 先给出上面拓扑图的结论,后面再详细讲解: 结论:只有PC1与PC4之间能相互通信,除此之外,所有PC之间均不能通信,比如PC1与PC3不能建立通信。 针对Ping命令的一个知识: 要想ping通某台主机,必须满足两个条件: 1,源主机的ICMP请求包必须能达到目的主机。 2,目的主机的ICMP应答包必须能回到源主机。 二、理论基础 端口的出...

NoobMaster的博客 3万+

Java中.class

一、什么是类对象 一个类在被加载的时候虚拟机就会自动的生成一个这个类的一个Class类型的“类对象”,每个类都对应着一个这样的类对象,通过这个Class类型的类对象,我们就能够使用“内省与反射”机制,访问一个类的信息,比如:对应类中的方法有哪些,成员域有哪些等等。 二、获取类对象的方法 1.类名.class 2.对象调用getClass()方法获取该对象的Class实例 Student s = new Student(); Class c = s.getClass(); 3.使用Class的静

qq_59676409的博客 6253

ArcMap投影变换避坑指南:为什么你的坐标转换总出错?常见问题解析与解决方案

本文深入解析ArcMap中坐标转换与投影变换的核心区别与常见陷阱。针对坐标转换总出错的问题,从混淆“定义投影”与“投影变换”、栅格数据重采样选择、矢量数据地理变换参数设置等关键环节,提供清晰的避坑指南与实战解决方案,帮助用户确保空间数据的精确匹配。

weixin_29210727的博客 356

深入解析 Java 中的 类名.class:使用与原理全攻略

类名.class类名.class是 Java 中获取Class对象的一种高效方式,它为反射机制、注解处理、动态代理等提供了基础支持。在实际开发中,合理使用类名.class可以极大地提高代码的灵活性和可扩展性。希望这篇文章对你有所帮助!如果你有任何问题或想法,欢迎在评论区留言讨论!🚀。

weixin_39033358的博客 1789

cesium 实时轨迹

运用cesium中model和polyline添加模型和轨迹线,用CallbackProperty方法来实时改变经纬度。

God's asylum的博客 1964

分布式训练中All-Reduce、All-Gather、Reduce-Scatter原理

Reduce-Scatter = 先对所有进程的数据做 Reduce(如 sum / mean),再把结果“切分”分发给各进程。(是 Reduce + Scatter 的融合操作。

comli_cn的博客 339

【Java】Java Class对象的理解

JAVA Class对象的理解、泛型的理解

sinat_29846389的博客 1万+

基于YOLOv11的气象目标检测系统:台风眼与钩状回波检测

气象目标检测是计算机视觉在气象领域的重要应用,对台风预警和强对流天气监测具有重要意义。本文详细介绍了一种基于YOLOv11的气象目标检测系统,能够有效识别卫星云图中的台风眼和雷达图中的钩状回波。系统包含完整的数据处理流程、模型训练策略以及用户友好的Web界面。我们使用了公开的气象数据集进行训练和验证,并提供了完整的实现代码。实验结果表明,本系统在气象目标检测任务中达到了较高的准确率和实用性。关键词:气象目标检测;YOLOv11;台风眼检测;钩状回波;深度学习;计算机视觉台风眼检测数据集。

YOLO 473

java基础 学习笔记(二):常用类 —— class类

java常用类Exception类Object类File类System类和Runtime类String类集合类Class类权限访问 Exception类 Object类 File类 System类和Runtime类 String类 集合类 Class类 权限访问

qq_28376741的博客 343

Camera2Demo

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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java常用类库:字符串相关类——Class String、Class StringBuffer、Class StringBuilder

Java常用类库:字符串相关类——Class String、Class StringBuffer、Class StringBuilder 1、Class String 1.1、String类的介绍 1.2、String类的构造方法 1.3、String类的常用方法 2、Class StringBuffer和Class StringBuilder 2.1、两个类的区别 2.2、两个类的构造方法 2.3、两个类常用的方法

friend_X的博客 813

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java学习第五章-内部类与常用类(String,包装类)

内部类与常用类

langMR的博客 482

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Class类

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

杰尼龟的小龟壳的博客 1054

java常用类总结

1 内部类 定义: 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 1.1 成员内部类 成员内部类 :定义在类中方法外的类。 如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类。 例如:身体和心脏的关系。又如:汽车和发动机的关系。 分类: 成员内部类 局部内部类(包含匿名内部类) 成员内部类的定义格式: 修饰符 class 外部类名称 { 修饰符 class 内部类名称 { // ... } // ... }

xiaoyong5854的博客 374

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

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

龚小帅的博客 894

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类&面向对象

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

SOS_suyan的博客 2014

JAVA中类、实例与Class对象

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

u010325193的博客 2156

java class类详解

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

jacklin_01的博客 6088

Java Class类简介

3.对于某个类的Class类对象,在内存中只有一份,因为类只加载一次。7.类的字节码二进制数据,是存放在方法区的。类加载器ClassLoader有个方法LoadClass(),将某个类对应的Class对象生成在堆中。运行时加载需要的类,如果运行时不用该类,则不报错(该类不存在或有其他问题),降低依赖性。也就是说一个类不管实例化多少对象,这些对象都和这个类的Class对象相关联。4.每个类的实例,都会与自己类的Class对象(实例)相关联。1.外部类,成员内部类,静态内部类,局部内部类,匿名内部类。

qq_63635872的博客 2298

java 中的class类_Java中Class类简介

Java中Class类简介1. 在面向对象的世界里,万事万物皆对象。(java语言中,静态的成员、普通数据类型除外)类是不是对象呢?类是(哪个类的对象呢?)谁的对象呢?-- 类是对象,类是java.lang.Class类的实例对象2. 这个对象到底如何表示3 . Class.forName("类的全称")不仅表示了,类的类类型,还代表了动态加载类请大家区分编译、运行编译时刻加载类是静态加载类、运行...

weixin_42565652的博客 3930

Class类源码解析:一文给你搞定Class类!(非常详细)从零基础到精通,收藏这篇就够了!

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

yy1715713348的博客 1245
上一篇: Java常用类:ThreadLocal
下一篇: Java常用类:ClassLoader
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值