java初反射_java反射机制初体验1

反射机制

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

反射的基石:Class类

Java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class。注意:与小写class的区别,它是定义类时使用的关键字。

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

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

如何得到各个字节码对应的实例对象(Class类型)三种

创建顺序:字节码在硬盘中——>加载到内存中——>创建对象。

形式:Class class=字节码;

1、Class class1=Date.class;     //固定写法

2、Class class2=new Date().getClass();  //有了字节码创建的对象

3、Class class3=Class.forName(“java.uti.Date”);   //静态方法。(这是主要方式:因为写源程序时还不知道类的名字,写源程序时可以用一个字符串变量,然后从配置文件按中读取)

forName得到类的字节码有两种情况:

1)、字节码已加载到内存中,无需加载,找到字节码返回。

2)、虚拟机还没有字节码,用类加载器,将字节码缓存起来(以后无需再加载),使用forName方法获取。

代码示例

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngView Code

1 packagereflect;2

3 public classReflectTest {4

5 /**

6 *@authoralan7 *@paramargs8 *@throwsException9 */

10 public static void main(String[] args) throwsException {11 /*

12 * String的字节码在虚拟机是同一份。13 * class1、class2、class3是此字节码的三个事例,所以三者相等。14 */

15 String string="string";16 Class class1=string.getClass();17 Class class2=String.class;18 Class class3=Class.forName("java.lang.String");19 System.out.println(class1==class2);20 System.out.println(class1==class3);21

22 /*

23 * 有九种预定义的 Class 对象,表示八个基本类型和 void。24 * 这些类对象由 Java 虚拟机创建,与其表示的基本类型同名,25 * 即 boolean、byte、char、short、int、long、float 和 double。26 * 只要在源程序中出现的类型,都有各自的Class实例对象。如:int[]、void...27 */

28 System.out.println(String.class.isPrimitive()); //String不是基本类型的字节码。

29 System.out.println(int.class.isPrimitive());30 System.out.println(int.class==Integer.class); //int与Integer有不同的字节码。

31 System.out.println(int.class==Integer.TYPE); //Integer.TYPE表示Integer所包装的基本类型的字节码。

32 System.out.println(int[].class.isPrimitive()); ///数组类型不是原始类型。

33 System.out.println(int[].class.isArray()); //判定此 Class 对象是否表示一个数组类。

34 }35

36 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值