java反射菜鸟教程_Java反射

java反射菜鸟教程_Java反射JAVA反射机制1定义:主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!2.作用A:反编译:.class–>.javaB:通过反射机制访问java对象的属性…

大家好,又见面了,我是你们的朋友全栈君。

JAVA反射机制

1定义:

主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!

2.作用

A:反编译:.class–>.java

B:通过反射机制访问java对象的属性,方法,构造方法等;

这样好像更容易理解一些,下边我们具体看怎么实现这些功能。

3.获取Class对象有三种方式:

(1)..通过Object类的getClass()方法。例如:

Class c1 = new String(“”).getClass();

(2).通过Class类的静态方法——forName()来实现:

Class c2 = Class.forName(“MyObject”);

(3).如果T是一个已定义的类型的话,在java中,它的.class文件名:T.class就代表了 与其匹配的Class对象,例如:

Class c3 = Manager.class;

Class c4 = int.class;

Class c5 = Double[].class;

4.Class类中存在以下几个重要的方法:

a.getName()

一个Class对象描述了一个特定类的特定属性,而这个方法就是返回String形式的该类 的简要描述。由于历史原因,对数组的Class对象

调用该方法会产生奇怪的结果。

b.newInstance()

该方法可以根据某个Class对象产生其对应类的实例。需要强调的是,它调用的是此类 的默认构造方法。例如:

MyObject x = new MyObject();

MyObject y = x.getClass().newInstance();

c.getClassLoader()

返回该Class对象对应的类的类加载器。

d.getComponentType()

该方法针对数组对象的Class对象,可以得到该数组的组成元素所对应对象的Class对 象。例如:

int[] ints = new int[]{1,2,3};

Class class1 = ints.getClass();

Class class2 = class1.getComponentType();

而这里得到的class2对象所对应的就应该是int这个基本类型的Class对象。

e.getSuperClass()

返回某子类所对应的直接父类所对应的Class对象。

f.isArray()

判定此Class对象所对应的是否是一个数组对象。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143686.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月21日 上午7:20
下一篇 2022年5月21日 上午7:20


相关推荐

  • 设计师职场破冰指南!5个AI驱动ERP设计的关键技巧

    设计师职场破冰指南!5个AI驱动ERP设计的关键技巧

    2026年3月15日
    2
  • idea创建maven项目时一直在 Process Running[通俗易懂]

    idea创建maven项目时一直在 Process Running[通俗易懂]今天打算用idea写个maven项目时,创建到最后就一直在加载。等了大概20分钟,还在Process Running,我就等不下去了,各种查资料,最终解决了这个问题,写篇笔记,以防后期所需。解决方案:1、设置maven的配置 File—>Settings(Ctrl+Alt+S)—>Build—>Build Tools—>Maven—&…

    2022年6月13日
    56
  • Flutter初步-第一个电视直播APP「建议收藏」

    Flutter初步-第一个电视直播APP「建议收藏」#Flutter介绍不介绍百度泛滥的,能搜到的,flutter对个人而言,易上手,业余人士也能迅速开发出一款跨平台APP,多么神奇啊。用的dart语言,scaffold脚手架迅速对app布局,路由功能,更好管理页面。还有动画。小白能做到的极限就是到UI的设计,要更深入还得用dio库,学习getpost使用,混编估计有点难,毕竟我连Java都没去了解过。#Flutter安装千篇一律,不多介…

    2022年5月7日
    194
  • C# 中 Struct 与 Class 的区别,以及两者的适用场合

    C# 中 Struct 与 Class 的区别,以及两者的适用场合

    2021年7月30日
    59
  • MATLAB能进行拉氏变换吗,matlab拉氏反变换

    MATLAB能进行拉氏变换吗,matlab拉氏反变换2 3 拉氏变换和拉氏反变换的定义 2 4 典型时间函数的拉氏变换 2 5 拉氏变换的性质 2 6 拉氏反变换的数学方法 2 7 用拉氏变换解 实验八拉氏正反变换与零极点分析一 实验目的 1 掌握利用部分分式展开的方法求解拉普拉斯逆变换 并能利用 MATLAB 实现 2 掌握利用 MATLAB 计算拉氏正反变换 尤其对于信号的分析起到了直观而形

    2026年3月26日
    2
  • list集合为空或为null的区别

    list集合为空或为null的区别简述判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null,这是两码事。引用举个形象的例子,我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你想装水就需要自己去买个水杯(new ArrayList();),但是我就可以直接装水(list.add(水))。你要是没有杯子直接倒水,水就流出…

    2022年6月13日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号