黑马程序员—反射笔记

2018年黑马程序员全套教程java基础第1天笔记+讲义 2018年黑马程序员全套教程java基础第1天 jdk9教程,idea的使用等,java小白的最优之教程 立即下载

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

反射开始学起来是晦涩难懂的,但是却能让你在无形中提高水平

首先我想说明字节码的概念,即.class文件,他是.java被编译器编译过后的产物,每一个类都拥有属于他自己独特的字节码,String,int[],你自己的Student类等等,反射就是在这一层次上进行操作,由于我也是小试牛刀,只能讲讲初步的用法和理解。

—— Field

在你定义类的时候一般都有对应的成员变量

class student{

      private String name;

      String ID;

}

student s=new student();

Field field=s.getClass().getField("name");

在这里我们获取了student类中的name成员变量,field在这里是Field的一个实例,他能操作相应对象的成员变量

这个field并不指向一个具体的对象,当你在调用他的方法的时候需要指定具体的对象

field.set(s,"Jack");

这里便是将s的name置为“Jack”;

问题:暴利反射

但是name是private的,field提供了这样的一个方法

field.setAccessible(true);

那么即使是私有变量我们也可操作

问题:getFields()和getDeclaredFields()的区别

前期返回该类以及父类的所有public和默认修饰符的成员变量

后者返回本类的所有的成员变量(包含private)

——Constructor

继续以sudent为例。

Constructor[] constructors=s.getClass().getDeclaredConstructors();

Constructor constructor=s.getClass().getConstructor((参数的字节码))  获得你想要的构造函数

constructor.newInstance((相应的构造函数的参数))

返回student类的所有构造函数

通过s.getClass().newInstance()也能创建一个实例,但只能调用默认的构造函数,如果没有,则会抛出错误

——Method和Modifier

Method[] methods=s.getClass().getMethods();

for(Method method:methods)

{

    String name=m.getName();

     if(Modifier.isPublic(method.getModifiers()))

                 method.invoke(s,"")

    Class[] parameters=m.getParameterTypes();

    for(class p:parameters)

     {

         system.out.println(p.getName())

     }

}

选出修饰符为public的方法进行操作

取出方法的参数类型进行操作

——Array

这里我起初一直不能理解,但是接触多了,慢慢就有感觉了

判断一个数组的字节码是否相同以他的类型和维度作为标准

static Object  goodArray(Object o)

{

    Class c=o.getClass();

     if(!c.isArray())  return null;

    Class componentType=c.getComponentType();

    int length=Array.getLength(o);

    int newLength=length+10;

    Object newArray=Array.newInstance(componentType,newLength);//数组特有方法

    system.arraycopy(o,0,newArray,0,length)

    return newArray;

}

很经典的一段代码,将旧的数组的内容复制到新的数组中,然后将新数组返回

这里我们并不知道o是什么类型,但是通过反射我们可以得到他的类型和长度

然后创建一个同样类型的新数组

这就是反射的作用,在不知道对象的具体类型的时候,我们可以获取他的信息,从而进行一系列操作


Vue2项目实战:vue2-org-tree实现动态组织架构图 本文详细介绍了如何在Vue2项目中使用vue2-org-tree组件实现动态、可交互的组织架构图。内容涵盖从快速安装、基础渲染到核心功能实战,包括水平布局、节点展开折叠、响应式数据绑定、深度自定义节点内容以及事件处理。同时提供了性能优化、样式覆盖等避坑指南,并通过一个完整的企业级Demo展示了如何打造功能丰富的架构图,助力高效开发后台管理系统。 阅读详情

相关推荐

小曾WRF自学日记(3)渐入佳境 ——WRF实例-数据下载与WPS前处理

ww

weixin_46297571的博客 1480

黑马程序员-反射学习笔记

-------android培训、java培训、期待与您交流! ---------- ----------------------------------------反射学习---------------------------------------- 类的加载:        当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进

dotedy的博客 604

手把手教你排查libstdc++.so.6版本问题:从GLIBCXX缺失到完美解决

本文深入解析Linux系统中常见的GLIBCXX版本缺失问题,以`ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found`为例,从动态链接原理入手,提供使用`strings`和`find`命令的诊断方法,并详细对比了四种解决方案的优缺点。文章重点推荐通过设置`LD_LIBRARY_PATH`或更新系统库的安全策略,并最终建议使用Docker容器化技术实现环境依赖的根治与统一管理。

j7k8l的博客 301

【黑马java基础】单元测试、反射、注解

先来认识一下什么是注解?Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。比如:Junit框架的@Test注解可以用在方法上,用来标记这个方法是测试方法,被@Test标记的方法能够被Junit框架执行。再比如:@Override注解可以用在方法上,用来标记这个方法是重写方法,被@Override注解标记的方法能够被IDEA识别进行语法检查。注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。

YOLO的博客 982

【锂离子电池力学耦合及相场法模拟技术与应用】

8. 电化学仿真软件的使用与案例分析 (1) 各向异性纳米线锂化应力分析(实例讲解1) (2) 化学反应及死锂现象研究(案例分析2)(3) 锂化循环损伤计算(案例分析3)6. 4. 电池材料的力学与电化学耦合性能分析(1) 耦合效应对电池性能的影响(2) 耦合模型的验证与应。5. 5. 电池颗粒、极片、电芯尺度力-电-化-热多场耦合模型概述力学-7. 颗粒尺度耦合模型在电池失效分析中的应用。2. 2. 电池电极材料的分类与特性。5. (2) 耦合模型的验证与应用。电化学耦合模型与仿真。

weixin_51101456的博客 524

5分钟搞定!用扣子空间LinkReaderPlugin快速搭建网页内容抓取机器人(附Python复现代码)

本文详细介绍了如何利用扣子空间的LinkReaderPlugin快速搭建网页内容抓取机器人,仅需5分钟即可完成配置。通过Python复现代码和可视化工作流,开发者可以轻松实现智能网页抓取,提升数据采集效率。文章还探讨了与RAG工作流的集成方案及性能优化技巧,适用于金融监控、电商追踪等多种场景。

study的专栏 1093

黑马程序员-java学习笔记-反射

---------------------- android培训、java培训、期待与您交流! ---------------------- 反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个

u010024988的专栏 583

倍压整流电路设计

倍压整流电路利用二极管和电容的充放电特性实现电压提升,可分为二倍压、三倍压及多倍压结构。其工作原理是通过交流电正负半周交替对电容充电并叠加电压,具有结构简单、成本低的优点,但带载能力差且纹波较大。典型应用包括示波器、电蚊拍等小电流高压场景。设计时需重点考虑电容耐压、二极管选型和负载匹配,高频驱动可优化性能。该电路在低功耗高压电源中具有独特优势,但需注意安全防护与电压稳定性问题。

硬核科技 1716

黑马程序员——反射笔记

java,反射

weizhilin046的博客 414

一篇把 Transport 做到可复制的实战指南:从 CTS 底层表到 LSMW、Variant、Layout、TABU、Query、SAPscript 全对象搬运

本文深入解析SAP系统中的Transport机制,将其视为可审计、可追溯的变更流水线。文章从CTS/Transport Organizer通用方法论和具体对象搬运手法两个层面展开,详细介绍了LSMW项目、程序Variant、屏幕/ALV Layout、表数据、ABAP Query、SAPscript和SO10标准文本等对象的传输策略。通过真实案例说明,代码对象往往能被正确传输,但"运行体验"和"业务配置"却常被遗漏,导致QAS测试正常而PRD环境异常。文章提供了一套可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 177

q-learning精讲

Q-learning Q-learning是一种用于机器学习的强化学习技术。 Q-learning的目标是学习一种策略,告诉Agent在什么情况下要采取什么行动。 它不需要环境模型,可以处理随机转换和奖励的问题,而无需进行调整。 对于任何有限马尔可夫决策过程(FMDP),Q学习找到一种最优的策略,即从当前状态开始,它在任何和所有后续步骤中最大化总奖励的预期值。在给定无限探索时间和部分随机策略的情况...

weixin_41697507的博客 1万+

黑马程序员——JAVA笔记——反射

1、什么是反射? 我认为,简单的来说就是在运行时可以获取相应的类中各项信息的一个机制。也就是说可以获取在编译时不能获得的类的信息。 2、反射有什么用? 前面说了,通过反射可以获取在编译时不能获得的有关类的一系列信息。 也就是说可以再程序运行时动态的加载类,并通过一些方法创建对象、调用方法等。 3、反射的常用方法。 1、获取Class对象的三种方式(以String为例)。 String

安安安的博客 715

【AI大模型】DeepSeek + Kimi 高效制作PPT实战详解

AI赋能,使用DeepSeek 高效制作PPT实战详解

congge 1万+

黑马程序员--【强哥笔记】系列之Java高新技术笔记之反射(第3天)

【强哥笔记】系列之Java高新技术笔记之反射(第3天)..... 在“黑马程序员”工作了有半年光景,接触的学员也有接近500个,工作中遇到的问题很多,但是很多问题又很类似。 例如: 1、在“黑马”,一天的课程,信息量很大。学员白天辛苦上完课之后,晚上很难完整地回想起白天所讲过的内容。做的好的学员一个班也就十几个,可能只需要1-2个小时就可以完成。这些学员一般课堂笔记做的好,而且记忆力不错

heima_的专栏 598

WINCC7.3破解文件

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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

黑马程序员JAVA笔记9--反射

------- android培训、java培训、期待与您交流! ---------- 反射     JAVA反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象方法的功能称为java语言的反射机制。       动态获取类中信息,就是java反射。可以理解

free_stars_sword的博客 508

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

黑马程序员---反射学习笔记

反射学习笔记 (一)Java程序中的各个java类属于同一类事物。描述这类事物的java类名就是Class。每一个Class的实例对象其实就是该对象所属类的字节码。每一个类都有自己的字节码,即使是基本数据类型和void,数组也都有自己的字节码。   (二)反射就是把Java类中的各个成分(构造方法,方法,属性)映射成相应的java类。例如下: package cn.cx.reflec.st

qq_27900399的博客 516

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

黑马程序员_java反射笔记

反射

baidong008的专栏 715

黑马程序员——Java练习笔记——反射

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-Class类 定义:Java中有一个Class类用于代表某一个类的字节码。Class类既然代表某个类的字节码,当然就要提供加载某个类字节码的方法,用于将某个类的字节码加载到内存中,并使用class对象进行封装。获取class对象的三种方式: 1.forName(); 2.类名.class; 3.对象.get

ring_8677的专栏 420

黑马程序员——JAVA笔记之Java反射

反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。 反射的好处:大大的增强了程序的扩展性。 反射就是把java类中的各种成分映射成相应的java类(获取其中的变量,方法

yjsf216的专栏 586

黑马程序员——Java反射-整理笔记

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 反射的概念:          反射就是把Java类中的各种成分映射相成Java类。 反射机制:         简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。 反射机制的优缺点:       首

nanfp的博客 792

黑马程序员Java笔记——反射、正则

----------- android培训、java培训、java学习型技术博客、期待与您交流! ---------  反射   反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节 码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。 简单说:反射技术可以对一个类进行解剖。 反射的好处:大大的增强了程序的扩展性。

晴耕雨读 588

黑马程序员_笔记十七_基础增强之反射

----------android培训、java培训期待与您交流!---------- 在java中较为重要的就是反射机制,那么什么是反射机制?正常情况下,如果已经有一个类,则肯定可以通过类创建对象;那么如果现在要求通过一个对象找到一个类的名称,此时就需要用到反射机制。如果要完成反射操作,则首先要认识的就是Class类   Class类 在正常情况下,需要先有一个类的完整路径引入后才可以按

zlfjxs的专栏 491

黑马程序员-Java的反射学习笔记

反射介绍 反射,就是把Java类中的各种成分映射成相应的Java类。 程序要运行期间通过类名就能知道类的所有信息,构造函数、方法、成员变量。 Java中,一个字节码文件被类加载器加载进内存中后是一个Class类的实例,Class中有返回成员方法、变量、构造函数类的方法。Java中,类中的方法、变量都可以用类来表示,Method类表示成员方法、Field类表示类的成员变量。Constr

ssf的专栏 500

【黑马程序员】Java笔记--反射

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-【案例1】通过一个对象获得完整的包名和类名package Reflect;/** * 通过一个对象获得完整的包名和类名 * */ class Demo{ //other codes... }class hello{ public static void main(String[] args) {

atong1991的博客 386

(黑马程序员)学习笔记,反射

学习了反射后,对其作用有个大致的理解: 1.如果我知道一个类的名称,或者wonengnadao

jzxyhjl的专栏 480

黑马程序员 反射学习笔记

----------android培训、java培训、java学习型技术博客、期待与您交流!----------       ----------android培训、java培训、java学习型技术博客、期待与您交流!----------

u011442077的专栏 549
上一篇: 黑马程序员一内部类的改进思路
下一篇: Fragment的真正显示
Jacky_Pen
博客等级 码龄15年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值