Java Class类简介

news2024/12/23 15:04:23

一、类图:

二、基本介绍

1. Class也是类,因此也继承了Object类
2. Class类的对象不是new出来的,是系统创建的
    类加载器ClassLoader有个方法LoadClass(),将某个类对应的Class对象生成在堆中。
    通过调试可以发现:
        传统方法new一个类的时候,调用了loadClass()方法
        使用反射,也是调用loadClass()方法
        
3.对于某个类的Class类对象,在内存中只有一份,因为类只加载一次。(加载过程中用loadClass()方法创建)
4.每个类的实例,都会与自己类的Class对象(实例)相关联
    也就是说一个类不管实例化多少对象,这些对象都和这个类的Class对象相关联
5.通过Class对象可以完整地得到一个类的完整结构,调用相应的API
    
6.Class对象是存放在堆当中的。
7.类的字节码二进制数据,是存放在方法区的。有的地方称为类的元数据(包括 方法代码、变量名、方法名、访问权限等)
    即 类加载之后,除了在 堆中生成Class对象 ,还会 在方法区中生成一个该类的字节码二进制数据
   详情: hotpot java虚拟机Class对象是放在 方法区 还是堆中 ? - 知乎

三、常用方法

//获取Class类对象,?表示不确定的类型
Class<?> aClass = Class.forName("Class_.Cat");
//1.显示aClass对象是哪个类的对象 结果为Class_.Cat
System.out.println(aClass);
//2.显示aclass的运行类型 结果为java.long.Class
System.out.println(aClass.getClass());
//3.显示aclass类对象所属的类的包名 结果为Class_
System.out.println(aClass.getPackage().getName());
//4.得到完整类名 结果为Class_.Cat
System.out.println(aClass.getName());
//5.生成对象实例
Object o = aClass.newInstance();
//6.得到该类的某个属性(此处仅能调用共有属性) 在Cat中name默认为小米,所以输出小米
Field name = aClass.getField("name");
System.out.println(name.get(o));
//7.给属性赋值 因为重新赋值小红,所以输出小红。
name.set(o,"小红");
System.out.println(name.get(o));
//8.获取所有属性
Field[] fields = aClass.getFields();
for (int i = 0; i < fields.length; i++) {
System.out.println(fields[i].getName());
}

四、获取Class类对象的方法

在三个阶段有不同的获取方法:
1.编译阶段:Class.forName()
2.加载阶段:类.class
3.运行阶段: 对象.getClass()
4.也可以通过 类加载器ClassLoader得到某个类的Class对象。
//1.getName()
// 多用于配置文件,读取类全路径,加载类
Class<?> aClass = Class.forName("Class_.Cat");
System.out.println(aClass);

//2.通过.class获取,该方法最安全可靠,性能最高
// 多用于参数传递,比如通过反射得到对应构造器对象
System.out.println(Cat.class);

//3.通过该类的对象的.getClass()方法获得
// 多用于通过创建好的对象获取Class对象
Cat cat = new Cat();
System.out.println(cat.getClass());

//4.通过类加载器(有四种加载器)得到Class对象
ClassLoader classLoader = cat.getClass().getClassLoader();
Class<?> aClass1 = classLoader.loadClass("Class_.Cat");
System.out.println(aClass1);

//5.基本数据类型(int,char,boolean,float,double,byte,long,short)可以
//通过 Class cls = 基本数据类型.class
Class<Integer> integerClass = int.class;
System.out.println(integerClass);

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

五、哪些类型有Class对象

1.外部类,成员内部类,静态内部类,局部内部类,匿名内部类
2.interface:接口
3.数组
4.enum:枚举
5.annotation:注解
6.基本数据类型
7.void
System.out.println(Integer.class);//外部类
System.out.println(Serializable.class);//接口
System.out.println(Integer[].class);//数组
System.out.println(Deprecated.class);//注解
System.out.println(Thread.State.class);//枚举
System.out.println(int.class);//基本数据类型
System.out.println(void.class);//void
System.out.println(Class.class);//Class自身
六、动态加载和静态加载
基本说明:
    反射机制是Java实现动态语言的关键,通过反射实现类动态加载。
1. 静态加载:编译时加载相关的类,如果没有就报错,依赖性强。
2. 动态加载:运行时加载需要的类,如果运行时不用该类,则不报错(该类不存在或有其他问题),降低依赖性。
        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1715649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑显示由于找不到msvcr110.dll 无法继续执行如何处理?最简单的修复msvcr110.dll文件方法

电脑显示由于找不到msvcr110.dll 无法继续执行&#xff1f;当你看到这种提示的时候&#xff0c;请不要紧张&#xff0c;这种是属于dll文件丢失&#xff0c;解决起来还是比较简单的&#xff0c;下面会详细的列明多种找不到msvcr110.dll的解决方法。 一.找不到msvcr110.dll是怎么…

cesium绘制编辑区域

npm 安装也是可以的 #默认安装最新的 yarn add cesium#卸载插件 yarn remove cesium#安装指定版本的 yarn add cesium1.96.0#安装指定版本到测试环境 yarn add cesium1.96.0 -D yarn install turf/turf <template><div id"cesiumContainer"></div…

【Windows配置nginx开机自启】

Windows配置nginx开机自启 方式一&#xff1a;将nginx加入到windows服务中方式二&#xff1a;通过windows任务计划设定nginx开机自启 方式一&#xff1a;将nginx加入到windows服务中 下载window service wraper&#xff08;https://github.com/winsw/winsw/releases&#xff0…

【环境配置】windows的磁盘分区、VMware下的ubuntu20的安装、虚拟机系统界面过小的处理

这段时间在折腾自己的笔记本&#xff0c;刚好也有同学新买台式机咨询安装VMware软件&#xff0c;就顺便记录下windows的环境的一些操作。方便自己需要时查阅。 1 windows磁盘分区 在Windows系统中&#xff0c;磁盘分区和管理可以通过【磁盘管理】工具进行。要打开磁盘管理&…

【5.基础知识和程序编译及调试】

一、GCC概述&#xff1a;是GUN推出的多平台编译器&#xff0c;可将C/C源程序编译成可执行文件。编译流程分为以下四个步骤&#xff1a; 1、预处理 2、编译 3、汇编 4、链接 注&#xff1a;编译器根据程序的扩展名来分辨编写源程序所用的语言。根据不同的后缀名对他们进行相…

IDEA 2024.1.2安装与破解

官网下载 官网地址 安装 直接下一步 破解 破解网站 第一步 第二步 第三步 第四步 第五步

【图像处理与机器视觉】图像处理概述与像素

什么是数字图像处理 改善图像信息&#xff0c;便于作出解释 方便对图像传输&#xff0c;储存&#xff0c;方便机器理解 什么是数字图像 &#xff08;1&#xff09;模拟图像&#xff1a;连续二维函数 f&#xff08;x&#xff0c;y&#xff09;表示&#xff0c;其中 x&#xf…

猫狗分类识别模型建立②模型建立

一、导入依赖库 pip install opencv-python pip install numpy pip install tensorflow pip install keras 二、模型建立 pip install opencv-python pip install numpy pip install tensorflow pip install kerasimport os import xml.etree.ElementTree as ETimpor…

【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言方法一、使用excel配置表excel转txt文本读取txt数据按配置信息生成僵尸 方法二、使用ScriptableObject 配置关卡信息源码结束语 前言 本节主要是推荐两种实现配置关卡信息&#xff0c;并按表生成僵尸和关卡波次 方法一、使用…

202474读书笔记|《我自我的田渠归来》——愿你拥有向上的力量,一切的好事都应该有权利发生

202474读书笔记|《我自我的田渠归来》——愿你拥有向上的力量 《我自我的田渠归来》作者张晓风&#xff0c;被称为华语散文温柔的一支笔&#xff0c;她的短文很有味道&#xff0c;角度奇特&#xff0c;温柔慈悲而敏锐。 很幸运遇到了这本书&#xff0c;以她的感受重新认识一些事…

手机拍照扫描成电子版,这三款软件助你轻松搞定!

在数字化时代&#xff0c;将手机拍照的内容快速转换为电子版已经成为许多人日常生活和工作中不可或缺的技能。无论是快速记录文档、合同&#xff0c;还是将纸质照片、笔记转化为电子格式&#xff0c;手机拍照扫描功能都为我们提供了极大的便利。今天&#xff0c;就为大家介绍三…

视频智能分析平台LntonCVS视频安防平台智慧农场应用方案

随着乡村振兴战略的深入实施&#xff0c;数字化发展已经成为农业生产的新方向和突破。在聚焦数字发展、探索数字应用、感受数字赋能的新发展模式下&#xff0c;“数字大田”融合了视频监控技术、5G通信技术、物联网技术和AI智能技术等先进技术&#xff0c;为春季农耕农管提供了…

失落的方舟 命运方舟台服封号严重 游戏封IP怎么办

步入《失落的方舟》&#xff08;Lost Ark&#xff09;&#xff0c;这款由Smilegate精心打造的宏大规模在线角色扮演游戏&#xff08;MMORPG&#xff09;&#xff0c;您将启程前往阿克拉西亚这片饱经沧桑的奇幻大陆&#xff0c;展开一场穿越时空的壮阔探索。在这里&#xff0c;一…

人脸识别——探索戴口罩对人脸识别算法的影响

1. 概述 人脸识别是一种机器学习技术&#xff0c;广泛应用于各种领域&#xff0c;包括出入境管制、电子设备安全登录、社区监控、学校考勤管理、工作场所考勤管理和刑事调查。然而&#xff0c;当 COVID-19 引发全球大流行时&#xff0c;戴口罩就成了日常生活中的必需品。广泛使…

实战解析:爬取音乐每日推荐歌单并自动分享

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、准备阶段 三、实战步骤 四、总结与展望 一、引言 在数字化时代&#xff0c…

揭开神秘的“位移主题”面纱 no.16

Kafka中神秘的内部主题&#xff08;Internal Topic&#xff09;__consumer_offsets。 consumer_offsets在Kafka源码中有个更为正式的名字&#xff0c;叫*位移主题*&#xff0c;即Offsets Topic。为了方便今天的讨论&#xff0c;我将统一使用位移主题来指代consumer_offsets。需…

新疆 | 金石商砼效率革命背后的逻辑

走进标杆企业&#xff0c;感受名企力量&#xff0c;探寻学习优秀企业领先之道。 本期要跟砼行们推介的标杆企业是新疆砼行业的龙头企业&#xff1a;新疆兵团建工金石商品混凝土有限责任公司&#xff08;以下简称&#xff1a;新疆金石&#xff09;。 从年产80万方到120万方&am…

OpenMv图片预处理

本博客讲述的是获取一张图片首先对图像进行处理,比如畸形矫正,图像滤波等操作。 1.histeq()自适应直方图均衡 # 自适应直方图均衡例子 # # 此示例展示了如何使用自适应直方图均衡来改善图像中的对比度。 #自适应直方图均衡将图像分割成区域,然后均衡这些区域中的直方图,…

React基础知识笔记

Reat简介 React&#xff1a;用于构建用户界面的 JavaScript 库。由 Facebook 开发且开源。是一个将视图渲染为html视图的开源库 第一章&#xff1a;React入门 相关js库 react.development.js &#xff1a;React 核心库react-dom.development.js &#xff1a;提供 DOM 操作的…

5月岚庭工人大会“安全就是效率、形象即是品质”

2024年5月18日、19日岚庭一月一期的“产业工人大会”和“工程大会”圆满举行初夏正当时&#xff0c;此次大会主要围绕“安全”与“形象”展开六场专题培训只为精益求精产业工人和装修管家全体到场。 岚庭 以绝对【安全】护家护园 安全就是生命&#xff0c;违章就是事故&#x…