2.2.2 类反射场景与使用 -《SSM深入解析与项目实战》-阿里云开发者社区

开发者社区> Java技术进阶> 正文

2.2.2 类反射场景与使用 -《SSM深入解析与项目实战》

简介: 2.2.2 类反射场景与使用 -《SSM深入解析与项目实战》

@[TOC]

2.2.4  获取Class对象的三种方式

首先来进行了解一下Class类。Class对象是Java类反射的基础,包含了与类相关的信息。进入Class对象的源码进行查看,可以发现Class对象就是java.lang.Class这个类生成的对象,其中类型参数T表示由该Class建模的类的类型。比如说:User.class的类型就是Class。如果被建模的对象类型未知,则用?号代替,例如Class<?>。

我们可以看Class类的源码,来对Class对象进行进一步的了解。下面代码是Class源码上的注释。


/**

 * Instances of the class {@code Class} represent classes and

 * interfaces in a running Java application.  An enum is a kind of

 * class and an annotation is a kind of interface.  Every array also

 * belongs to a class that is reflected as a {@code Class} object

 * that is shared by all arrays with the same element type and number

 * of dimensions.  The primitive Java types ({@code boolean},

 * {@code byte}, {@code char}, {@code short},

 * {@code int}, {@code long}, {@code float}, and

 * {@code double}), and the keyword {@code void} are also

 * represented as {@code Class} objects.

 *

 * <p> {@code Class} has no public constructor. Instead {@code Class}

 * objects are constructed automatically by the Java Virtual Machine as classes

 * are loaded and by calls to the {@code defineClass} method in the class

 * loader.

对于英文水平好的读者,建议直接读英文原文。我这里简单的翻译前面两段。

Class类的实例表示正在运行的 Java应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组也属于一个被映射为Class对象的类,所有具有相同元素类型和维数的数组都共享该Class对象。基本的Java类型(boolean、byte、char、short、int、long、float和double)和关键字void也表示为Class对象。

Class没有公共构造方法。Class对象是在加载类时由Java虚拟机以及通过调用类加载器中的defineClass方法自动构造的。

......

更多内容请阅读原文:
https://chenhx.blog.csdn.net/article/details/107923538

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
Java技术进阶
使用钉钉扫一扫加入圈子
+ 订阅

Java技术进阶成长,课程资料,案例解析,实战经验全都有!

官网链接