黑马程序员-java之反射

P450酶催化循环的Amber-Gromacs混合模拟实战:从血红素加氧到产物释放 本文详细介绍了针对P450酶完整催化循环的Amber-Gromacs混合模拟实战策略。通过Amber为关键氧合血红素中间体(CPDI)构建精确力场,再利用Gromacs的高效GPU加速进行长时间尺度动力学模拟,完整覆盖从底物结合到产物释放的催化过程,为研究酶催化机制提供了强大的计算工具。 阅读详情

------------android培训、java培训、-----------


1 如何得到字节码对应的实例对象(Class类型)
  方式一:类名.class 例如:System.class    
  方式二:getClass() 例如:new Date().getClass()
  方式三:Class.forName("类名") 例如:Class.forName("java.util.Date");注意:这里的类名要用全名
2 9个预定义的Class实例对象
  boolean.class,byte.class,short.class,int.class,long.class,float.class,double.class,char.class,void.class
  int.class==Integer.TYPE
3 数组类型的Class实例对象
  Class.isArray()
  只要是在源程序中出现的类型,都有各自的Class实例对象,例如int[],void
4 反射就是把Java类中的各种成分映射成相应的java类(Method,Field,Constructor,Package等等)
  System.exit()-->Methodobj1
  System.getProperty()-->Methodobj2
5 得到某个类所有的构造方法
  Constructor[] cons = Class.forName("java.lang.String").getConstructors();
6 得到某一个构造方法
  Constructor con = Class.forName("java.lang.String").getConstructor(StringBuffer.class);//表示得到构造方法String(StringBuffer sb)注意:由于反射加载都很消耗内存,所以一般把反射后生成的常用的构造方法之类存储成变量形式,提高效率,这就是优化
  (String)con.newInstance(new StringBuffer("abc"));//相当于new String(new StringBuffer("abc"));
  Class.forName("java.lang.String").newInstance();//相当于 new String();
7 成员变量反射
  ReflectPoint pt1 = new ReflectPoint(3,5);
  Field fieldY = pt1.getClass().getField("y");//fieldY不是对象身上的变量,而是类上的成员变量,所以必须对应到具体的某个对象上的成员变量值;getField()只能对public修饰的成员变量进行访问
  System.out.println(fieldY.get(pt1));
  Field fieldX = pt1.getClass().getDeclaredField("x");//getDeclaredField()可以对声明过的任何成员变量访问
  fieldX.setAccesible(true);//强制获取变量值
  System.out.println(fieldX.get(pt1));
8 利用反射改变对象中原成员变量的值
  changeStringValue(Object obj){
    Field[] fields = obj.getClass().getFields();//获得对象对应的类中所有的成员变量
    for(Field field : fields){//遍历成员变量数组
           if(field.getType()==String.class){//因为String类在内存中就一份字节码文件所以这里用==
            String oldValue = (Sring)field.get(obj);//获得对象中字符串成员变量的值
            String newValue = oldValue.replace('b','a');//将字符串成员变量值中的b字符替换成a字符
            field.set(obj,newValue); //改变对象中字符串变量的值
        }
    }
  }
9 利用反射调用具体某个方法
  Method methodCharAt = String.class.getmethod("charAt",int.class);//第一个参数表示方法名,第二个参数表示方法中参数的类型字节码,方法中有几个参数就写几个对应的类型字节码
  System.out.println(methodCharAt.invoke(str,1));//相当于str.charAt(1);
  注意:invoke()中的第一个参数如果为null,则表示该被调用的方法是静态方法static,不需要指明哪个对象调用
10 调用main()
  String startingClassName = args[0];
  Method methodMain = Class.forName(startingClassName).getmethod("main",String[].class);
  methodMain.invoke(null,new Object[]{new String[]{"123","456","789"}});//等同于methodMain.invoke(null,(Object)new String[]{"123","456","789"});
11 数组在内存中的字节码
  两个数组只有在元素类型相同,且数组维度相同的情况下,他们在内存中的字节码才是同一份字节码
  int[] a1 = new int[3];
  int[] a2 = new int[4];
  int[][] a3 = new int[2][3];
  String[] a4 = new String[3];
  System.out.println(a1.getClass() == a2.getClass());//true  
  System.out.println(a1.getClass() == a3.getClass());//false 维度不同
  System.out.println(a1.getClass() == a4.getClass());//false 元素类型不同
  Arrays.asList(Object[]) //如果参数是int[]则把整体作为一个Object对象,如果是String[]则把它看作是Object[],如果是int[][]则同样看成Object[]因为会把其中的一位数组int[]看作是一个Object对象
12 数组的反射应用
   void printObject(Object obj){
    Class clazz = obj.getClass();
    if(clazz.isArray()){
        int len = Array.getLength();
        for(int i = 0;i<len;i++){
            System.out.println(Array.get(obj,i));
        }
    }else{
        System.out.println(obj);
    }
   }
13java中的内存泄露
  Collection coll = new HashSet();
  ReflectPoint pt1 = new ReflectPoint(1,2);//提示:ReflectPoint类中的hashCode()是用成员变量x,y进行计算的,覆写了系统的哈希码算法
  ReflectPoint pt2 = new ReflectPoint(3,4);
  ReflectPoint pt3 = new ReflectPoint(1,2);

  coll.add(pt1);
  coll.add(pt2);
  coll.add(pt3);
  coll.add(pt1);

  pt1.y = 7;
  coll.remove(pt1);//由于pt1的y值已经发生改变,所以其哈希码也会发生变化,对应的哈希值区域就会改变,而删除的时候会去原来哈希值所在区域查找,所以会删除失败,导致内存无端被占用,内存泄露
  System.out.println(coll.size());//打印结果是2
14 反射的作用-->>实现框架功能(自己写的程序调用未知的类)
   假设配置文件是config.properties这样写的className=java.util.ArrayList
   InputStream ips = new FileInputStream("config.properties");
   Properties props = new Properties();
   props.load(ips);
   ips.close();
   String className = props.getProperty(className);
   Collection coll = (Collection)Class.forName(className).newInstance();
   
   ReflectPoint pt1 = new ReflectPoint(1,2);//提示:ReflectPoint类中的hashCode()是用成员变量x,y进行计算的,覆写了系统的哈希码算法
   ReflectPoint pt2 = new ReflectPoint(3,4);
   ReflectPoint pt3 = new ReflectPoint(1,2);

   coll.add(pt1);
   coll.add(pt2);
   coll.add(pt3);
   coll.add(pt1);   
 
   System.out.println(coll.size());//打印结果是4

CRC_16---ModBus 计算方法及代码实现 1、 CRC寄存器初始值为 0xFFFF;即16个字节全为1; 2、 CRC-16 / ModBus的多项式0xA001H (1010 0000 0000 0001B) ; ‘H’表示16进制数,‘B’表示二进制数。 计算步骤为: (1).预置 16 位寄存器为十六进制 0xFFFF(即全为 1) ,称此寄存器为 CRC 寄存器; (2).把第一个 8 位数据与 16 位 CRC 寄存器的低位相异或,把结果放于 CRC 寄存器; (3).检测相异或后的CRC寄存器的最低位,若最低位为1,CRC寄存器 阅读详情

相关推荐

【自动驾驶控制算法】 第一讲 绪论

声明【自动驾驶控制算法】系列是博主对所分享教学内容的学习笔记,并且该系列每篇博客都会将博主听课后总结的纸质版笔记附于文末,供大家参考。是一位研究汽车领域,无人驾驶方向及其相关方向的大佬,也算是博主在无人驾驶方向的启蒙老师。所以研究相关领域的朋友推荐去听一听他的视频讲解。...

iamtbon_1的博客 1796

黑马程序员——java中的反射

1 反射的概念            反射就是把一个java类中的各种成分映射成相应的java类。           例如,一个java类用一个Class类来表示,一个类中的组成部分:成员变量,方法,构造方法,包等信息也用一个个的java类来表示。 2 获取一个类的字节码的三种方式:        例如获取String类的字节码          1  String.class   类

GaoTao_hm的专栏 501

echarts的坐标轴处理算法

参考原文:https://www.cnblogs.com/vicky-li/p/11653415.html。2、可用于双轴的情况,指定splitNumber,保证左右两边的线没有交叉显示的情况。1、设置echarts显示的最大最小值,让数据显示比较有起伏。处理echarts的一些问题。

HYeeee的博客 801

《黑马程序员》Java-反射

目录 反射的基本概念 获取字节码的三种方式 反射获取构造方法 反射获取成员方法 反射获取成员变量 反射的基本概念 反射的定义:在程序运行过程中分析类的一种能力。 正常情况: 反射: 反射的作用 (1)分析类。加载并初始化一个类,查看类的所有属性和方法。 (2)查看并使用对象。查看一个对象的所有属性和方法,使用对象的任意属性和方法。 反射的应用场景 1、构建通用的工具 2、搭建具有高度灵活性和扩展性的系统框架 3、逆向工程中常用反射 获取字节码的三种方式 .

Amigo_1997的博客 749

Arxml文件可视化:当汽车软件架构遇见交互式设计工具

本文探讨了Arxml文件在汽车电子系统开发中的可视化技术,结合AUTOSAR架构标准,介绍了如何利用现代Web技术构建交互式设计工具。通过三维组件关系图、动态数据流展示和版本对比等功能,显著提升开发效率和架构评审质量,适用于MBD和ASPICE开发流程。

weixin_29050271的博客 427

海康VisionMaster零代码开发实战:从PLC工程师到视觉专家的捷径

本文为PLC工程师提供了利用海康VisionMaster视觉平台实现零代码视觉开发的实战指南。文章详细阐述了如何通过图形化流程设计替代传统编程,快速搭建视觉检测应用,并实现与PLC的无缝通讯,是工程师从设备控制迈向视觉系统集成的有效捷径。

weixin_29201859的博客 293

黑马程序员—Java反射

14. 反射     14.1   Class类   Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。   Class.forName(String) 该方法返回字节码。如果字节码曾经被加载过,存在于jvm中,则直接返回。如果jvm中还没有此字节码,则用类加载器去加载,将其缓冲在jvm中 此方法会抛出ClassNotFoundExceptio

rubiolelouch的博客 488

WSL2 Ubuntu复现FoundationPose项目(docker)

复现一个基于深度学习的物体姿态估计框架FoundationPose项目,使用docker,WSL2

woaidawangwang的博客 2000

黑马程序员——————Java 反射

一:   Class 类  反射的基石————>Class            Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。                             得到字节码的三种方法:                               1:  Class.forName("类名")  (反射主要用这个)

li659264的专栏 627

Spring Boot集成ShardingSphere实现数据加密及数据脱敏 | Spring Cloud 48

利用ShardingSphere实现: - 数据加密 - 数据脱敏

gmHappy 1万+

华为面试手撕真题【字符串压缩】

华为面试手撕真题【字符串压缩】

MISAYAONE的博客 1万+

黑马程序员——Java反射

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

chenweizuo的专栏 552

WINCC7.3破解文件

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

黑马程序员 java 反射详解

(1)、反射的基础知识 JAVA反射机制可以说是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。 反射的基石:  Class 字节码 得到这个类的字节码的实例对象有3种 类名.class  如,System.class; 对象.class   如p1.getClass();  Class.forName("java.l

oybgood1988的专栏 805

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

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

安安安的博客 714

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

黑马程序员 Java中反射的应用

---------------------- android培训、java培训、期待与您交流! ---------------------- 对于一个Javabean可以通过实例化的形式得到对象,也可以通过反射的原理得到对象,并且给对象赋值 最基本的反射方法获取类字节码通过getClass方法获取 下面介绍通过反射直接给对象赋值。 先定义一个Student 的JavaBean pub

JavaEE高级工程师的专栏 843

黑马程序员_JAVA之反射

------- android培训、java培训、期待与您交流!---------- instanceof关键字: 用于判断某个对象所属类型 格式: 对象   instanceof   类名     (返回值为布尔类型) 代码实现: package cn.itcast; public class Demo {

three_for_PP的博客 416

黑马程序员 java之反射

 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、概述 反射技术:         Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。         简单一句话

qq_15080627的专栏 340

黑马程序员————Java部分之反射

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、概述 反射技术:         Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。         简单一句话:反射技术可

hu19910320的专栏 779

黑马程序员_Java反射机制

------- android培训、java培训、期待与您交流! ---------- 类的加载:     当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类的初始化。      加载:         就是指将class文件读入内存,并为之创建一个Class对象。         任何类被使用时系统都会建立

县令的专栏 447

黑马程序员_java反射

1.反射 :反射是基于类的一些操作    (1)类:java程序中的各个java类属于同一类事物,描绘这些事物类名就是Class,如人-Persion java类-Class。           对比想一下 Persion类代表这人类,他的一个实例对象是“张三”,那java类它的实例对象又是对应什么           呢?       1.对应各个类在内存中的字节码,如Persion类

wangyukun0423的专栏 500

黑马程序员——Java 反射技术

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  一、概述  1.理解反射:   反射就是把java类中的各种成分映射成相应的java类。  2.反射中常用的类:   Class类:是反射的基石,由它可得到字节码中构造方法、成员变量、成员方法、包等信息。   Constructor类:用来描述java类中的构造方法

tansuozhe1990的博客 534

黑马程序员——java基础——反射

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 学习反射首先要明白三个问题,明白了这三个问题,反射你就懂了。 第一个问题是什么是反射? java类中有很多成分,例如:成员变量,方法,构造函数,包,将这些成员年变量也用一个一个相应的类来表示,因此反射就是将java中的成员变量映射成相应的java类。 那么问题来了,映射成那些类了呢?

肖志江的博客专栏 492

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

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

free_stars_sword的博客 508

黑马程序员 JAVA提高——反射

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ java中的反射机制 一:什么是反射? 1,反射的概念:主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。反射本身并不是一个新概念,尽管计算机科学赋予了反射概念新的含义。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类

u012562441的专栏 761

黑马程序员——java的反射机制

------- android培训、java培训、期待与您交流! ---------- 前言:通过观看毕向东老师的java基础视频,查漏补缺,将一些自己掌握的还不牢固的知识写出来,希望和大家交流分享。 1.反射技术是java在运行的时候获取类的基本信息。 2.反射技术在三大框架struts2,Hibernate,Spring中有广泛应用。

hgdswj的博客 1048

《黑马程序员》java 数组反射

数组同样可以当做基本类型来看待。可以通过反射

spsss的专栏 1015
上一篇: 黑马程序员-java之可变参数
下一篇: 黑马程序员-java之IO流应用
forTomorrow_java
博客等级 码龄11年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值