java反射(二)

Raspberry Pi 5 树莓派5--初体验(硬件安装、搭建系统环境) 树莓派(Raspberry Pi)是一款基于ARM架构的微型计算机,最初为编程教育设计,具备多媒体处理、文档编辑等多种功能,支持4K视频播放。树莓派经过多年迭代,2023年发布了最新的Raspberry Pi 5,配备2.4GHz四核处理器,CPU性能提升2-3倍,图形处理和相机支持也有显著增强。其USB和SD卡带宽均提升,并引入PCI Express 2.0接口。使用树莓派时,可通过烧录系统至SD卡,再通过远程连接或外接显示器操作,完成系统配置与设置。 阅读详情

一、什么是反射机制 
        简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 
    那么就可以通过反射机制来获得类的所有信息。 
二、哪里用到反射机制 
        有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, 
    Class.forName("com.mysql.jdbc.Driver.class").newInstance();但是那时候只知道那行代码是生成 
    驱动对象实例,并不知道它的具体含义。听了反射机制这节课后,才知道,原来这就是反射,现在很多开 
    框架都用到反射机制,hibernate、struts都是用反射机制实现的。 
三、反射机制的优点与缺点 
        为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念, 
    静态编译:在编译时确定类型,绑定对象,即通过。 
    动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多 
    态的应用,有以降低类之间的藕合性。 
    一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中 
    它的灵活性就表现的十分明显。比如,一个大型的软件,不可能一次就把把它设计的很完美,当这个程序编 
    译后,发布了,当发现需要更新某些功能时,我们不可能要用户把以前的卸载,再重新安装新的版本,假如 
    这样的话,这个软件肯定是没有多少人用的。采用静态的话,需要把整个程序重新编译一次才可以实现功能 
    的更新,而采用反射机制的话,它就可以不用卸载,只需要在运行时才动态的创建和编译,就可以实现该功 
    能。 
       它的缺点是对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它 
    满足我们的要求。这类操作总是慢于只直接执行相同的操作。 
四、利用反射机制能获得什么信息 
         一句话,类中有什么信息,它就可以获得什么信息,不过前提是得知道类的名字,要不就没有后文了 
    首先得根据传入的类的全名来创建Class对象。 
    Class c=Class.forName("className");注明:className必须为全名,也就是得包含包名,比如,cn.netjava.pojo.UserInfo; 
    Object obj=c.newInstance();//创建对象的实例 
    OK,有了对象就什么都好办了,想要什么信息就有什么信息了。   
    获得构造函数的方法 
    Constructor getConstructor(Class[] params)//根据指定参数获得public构造器

    Constructor[] getConstructors()//获得public的所有构造器

    Constructor getDeclaredConstructor(Class[] params)//根据指定参数获得public和非public的构造器

    Constructor[] getDeclaredConstructors()//获得public的所有构造器 
    获得类方法的方法 
    Method getMethod(String name, Class[] params),根据方法名,参数类型获得方法

    Method[] getMethods()//获得所有的public方法

    Method getDeclaredMethod(String name, Class[] params)//根据方法名和参数类型,获得public和非public的方法

    Method[] getDeclaredMethods()//获得所以的public和非public方法 
    获得类中属性的方法 
    Field getField(String name)//根据变量名得到相应的public变量

    Field[] getFields()//获得类中所以public的方法

    Field getDeclaredField(String name)//根据方法名获得public和非public变量

    Field[] getDeclaredFields()//获得类中所有的public和非public方法 
    常用的就这些,知道这些,其他的都好办…… 
五、用反射机制能干什么事 
        刚开始在使用jdbc时侯,在编写访问数据库时写到想吐,有八个表,每个表都有增删改查中操作 
    那时候还不知道有反射机制这个概念,所以就对不同的表创建不同的dao类,这样不仅开发速率地,而且代码 
    冗余的厉害,最要命的是看着差不多的,然后直接复制修改,由于容易犯各种低级的错误(大小写啊,多一 
    个或少一个字母啊……),一个错误就可以让你找半天。 
        有了java反射机制,什么都好办了,只需要写一个dao类,四个方法,增删改查,传入不同的对象,就OK啦, 
    无需为每一个表都创建dao类,反射机制会自动帮我们完成剩下的事情,这就是它的好处。说白了,反射机制就是专门 
    帮我们做那些重复的有规则的事情,所以现在很多的自动生成代码的软件就是运用反射机制来完成的,只要你按照规则 
    输入相关的参数,所以低级的程序员慢慢的就被抹杀了,为什么?因为代码都不用写了,随便一个人都会开发,还要程 
    序员干什么啊?所以我们只有一条出路,那就是努力努力再努力,成为高级程序员,专门开发傻瓜软件,让其他程序员  到 一边凉快去,呵呵~ 
六、用反射机制实现对数据库数据的增、查例子 
    基本原理;保存数据时,把需要保存的对象的属性值全部取出来再拼凑sql语句 
                 查询时,将查询到的数据全部包装成一个java对象。 
    游戏规则:俗话说的好,无规矩不成方圆,特别是程序来说,它只能做有规则的事情,没有规则的它干不了,好,那就 
              先定规则 
              1)数据库的每一个表对象一个pojo类,表中的每一个字段对应pojo类的中的一个属性。 
                 并且pojo类的名字和表的名字相同,属性名和字段名相同,大小写没有关系,因为数据库一般不区分大小写  
              2)为pojo类中的每一个属性添加标准的set和get方法。 
    有了游戏规则,那么开始游戏吧。

1、首先数据库的有一个表,假设数据库名称为:blogsystem,里面的一个表名userinfo。如图:

2、创建对应的pojo类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package cn.netjava.pojo;
 
public class  UserInfo {
private int  id ;
private String name;
private String pwd;
private int  age;
 
@Override
public String toString() {
     return  "UserInfo [id="  +  id  +  ", name="  +  name +  ", pwd="  +  pwd +  ", age="
             +  age +  "]" ;
}
public int  getId() {
     return  id ;
}
public void setId( int  id ) {
     this. id  =  id ;
}
public String getName() {
     return  name;
}
public void setName(String name) {
     this.name =  name;
}
public String getPwd() {
     return  pwd;
}
public void setPwd(String pwd) {
     this.pwd =  pwd;
}
public int  getAge() {
     return  age;
}
public void setAge( int  age) {
     this.age =  age;
}
 
}
2、编写获得数据库连接的工厂类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package cn.netjava.factory;
 
import  java.sql.Connection;
import  java.sql.DriverManager;
 
public class  Connect2DBFactory {
     public static Connection getDBConnection() {
         Connection conn =  null;
         try  {
             Class.forName( "com.mysql.jdbc.Driver" );
             String url =  "jdbc:mysql://localhost:3306/blogsystem" ;
             String user =  "root" ;
             String password =  "netjava" ;
             conn =  DriverManager.getConnection(url, user, password);
         } catch (Exception e) {
             e.printStackTrace();
         }
 
         return  conn;
     }
}

 

3、好戏开始啦,编写操作数据库的dao类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
package cn.netjava.session;
 
import  java.lang.reflect.Field;
import  java.lang.reflect.Method;
import  java.sql.Connection;
import  java.sql.PreparedStatement;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;
import  java.util.ArrayList;
import  java.util. List ;
 
import  cn.netjava.factory.Connect2DBFactory;
import  cn.netjava.pojo.UserInfo;
 
public class  NetJavaSession {
     / * *
      *  解析出保存对象的sql语句
      *
      *  @param object
      *             :需要保存的对象
      *  @ return :保存对象的sql语句
      * /
     public static String getSaveObjectSql( Object  object ) {
         / /  定义一个sql字符串
         String sql =  "insert into " ;
         / /  得到对象的类
         Class c =  object .getClass();
         / /  得到对象中所有的方法
         Method[] methods =  c.getMethods();
         / /  得到对象中所有的属性
         Field[] fields =  c.getFields();
         / /  得到对象类的名字
         String cName =  c.getName();
         / /  从类的名字中解析出表名
         String tableName =  cName.substring(cName.lastIndexOf( "." ) +  1 ,
                 cName.length());
         sql + =  tableName +  "(" ;
         List <String> mList =  new ArrayList<String>();
         List  vList =  new ArrayList();
         for  (Method method : methods) {
             String mName =  method.getName();
             if  (mName.startsWith( "get" ) && !mName.startsWith( "getClass" )) {
                 String fieldName =  mName.substring( 3 , mName.length());
                 mList.add(fieldName);
                 System.out.println( "字段名字----->"  +  fieldName);
                 try  {
                     Object  value =  method.invoke( object , null);
                     System.out.println( "执行方法返回的值:"  +  value);
                     if  (value instanceof String) {
                         vList.add( "\""  +  value +  "\"" );
                         System.out.println( "字段值------>"  +  value);
                     } else  {
                         vList.add(value);
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
             }
         }
         for  ( int  i =  0 ; i < mList.size(); i + + ) {
             if  (i < mList.size() -  1 ) {
                 sql + =  mList.get(i) +  "," ;
             } else  {
                 sql + =  mList.get(i) +  ") values(" ;
             }
         }
         for  ( int  i =  0 ; i < vList.size(); i + + ) {
             if  (i < vList.size() -  1 ) {
                 sql + =  vList.get(i) +  "," ;
             } else  {
                 sql + =  vList.get(i) +  ")" ;
             }
         }
 
         return  sql;
     }
 
     public static List  getDatasFromDB(String tableName, int  Id ) {
 
         return  null;
 
     }
 
     / * *
      *  将对象保存到数据库中
      *
      *  @param object
      *             :需要保存的对象
      *  @ return :方法执行的结果; 1 :表示成功, 0 :表示失败
      * /
     public int  saveObject( Object  object ) {
         Connection con =  Connect2DBFactory.getDBConnection();
         String sql =  getSaveObjectSql( object );
         try  {
             / /  Statement statement = (Statement) con.createStatement();
             PreparedStatement psmt =  con.prepareStatement(sql);
             psmt.executeUpdate();
             return  1 ;
         } catch (SQLException e) {
             e.printStackTrace();
             return  0 ;
         }
     }
 
     / * *
      *  从数据库中取得对象
      *
      *  @param arg0
      *             :对象所属的类
      *  @param id
      *             :对象的 id
      *  @ return :需要查找的对象
      * /
     public Object  getObject(String className, int  Id ) {
         / /  得到表名字
         String tableName =  className.substring(className.lastIndexOf( "." ) +  1 ,
                 className.length());
         / /  根据类名来创建Class对象
         Class c =  null;
         try  {
             c =  Class.forName(className);
 
         } catch (ClassNotFoundException e1) {
 
             e1.printStackTrace();
         }
         / /  拼凑查询sql语句
         String sql =  "select * from "  +  tableName +  " where Id="  +  Id ;
         System.out.println( "查找sql语句:"  +  sql);
         / /  获得数据库链接
         Connection con =  Connect2DBFactory.getDBConnection();
         / /  创建类的实例
         Object  obj =  null;
         try  {
 
             Statement stm =  con.createStatement();
             / /  得到执行查寻语句返回的结果集
             ResultSet set  =  stm.executeQuery(sql);
             / /  得到对象的方法数组
             Method[] methods =  c.getMethods();
             / /  遍历结果集
             while  ( set . next ()) {
                 obj =  c.newInstance();
                 / /  遍历对象的方法
                 for  (Method method : methods) {
                     String methodName =  method.getName();
                     / /  如果对象的方法以 set 开头
                     if  (methodName.startsWith( "set" )) {
                         / /  根据方法名字得到数据表格中字段的名字
                         String columnName =  methodName.substring( 3 ,
                                 methodName.length());
                         / /  得到方法的参数类型
                         Class[] parmts =  method.getParameterTypes();
                         if  (parmts[ 0 ] = =  String. class ) {
                             / /  如果参数为String类型,则从结果集中按照列名取得对应的值,并且执行改 set 方法
                             method.invoke(obj, set .getString(columnName));
                         }
                         if  (parmts[ 0 ] = =  int . class ) {
                             method.invoke(obj, set .getInt(columnName));
                         }
                     }
 
                 }
             }
 
         } catch (Exception e) {
             e.printStackTrace();
         }
         return  obj;
     }
}

 

4、开始测试效果怎么样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package cn.netjava.tester;
 
import  cn.netjava.pojo.UserInfo;
import  cn.netjava.session.NetJavaSession;
 
public class  Tester {
     public static void main(String args[]) {
         / / 获得NetJavaSession对象
         NetJavaSession session =  new NetJavaSession();
         / / 创建一个UserInfo对象
         UserInfo user =  new UserInfo();
         / / 设置对象的属性
         user.setId( 6988 );
         user.setAge( 44 );
         user.setPwd( "pwd" );
         user.setName( "champion" );
         / / 将对象保存到数据库中
         String sql =  session.getSaveObjectSql(user);
         System.out.println( "保存对象的sql语句:"  +  sql);
         / / 查找对象
         UserInfo userInfo =  (UserInfo) session.getObject(
                 "cn.netjava.pojo.UserInfo" , 6988 );
         System.out.println( "获取到的信息:"  +  userInfo);
 
     }
}

 

5、打印出来的结果:

七、总节一下

      总的来说,java反射机制是一个很好用的东西,用它可以解决很多死的东西,因为反射机制的灵活行很大,有了他,我们就不要花太多的时间来写操做数据库的代码了,而是方法更多的时间在项目的逻辑功能上,这个可以很大的减少开发时间,而且代码的可读性好。先在的很多开源框架都是才用的反射机制,它只要配置文件,然后按规则来调用他的方法就可以了。

【微蓝课堂】机器人编程|树莓派系列|01-认识树莓派 课堂目标了解树莓派的理念及设计初衷。了解树莓派的功能,我们用它能做哪些事情。了解树莓派各个系列的区别,帮助我们选择适合自己的开发版。 阅读详情

相关推荐

Java筑基二《注解与反射》

java注解(Annotation)又称java标注,是JDK5.0引入的一种注释机制。注解是 **元数据**的一种形式,特性:提供有关与程序但不属于程序本身的数据。注解对它们注解的代码操作没有直接影响。(单独存在没有任何意义,标记标签)->主要用于框架,架构设计

yuhang01的博客 502

01 - 树莓派简介以及烧录系统

树莓派的简介, 以及烧录系统, bootloader

小郑在路上 1万+

用Java实现森林冰火人游戏

g.drawString("游戏结束", CELL_SIZE * COLS / 2 - 100, CELL_SIZE * ROWS / 2);g.drawString("难度级别: " + difficultyLevel, 10, CELL_SIZE * ROWS + 60);g.drawString("生命值: " + playerHealth, 10, CELL_SIZE * ROWS + 20);setTitle("森林冰火人");

2401_82778412的博客 1734

树莓派最新的安装,设置与教程,助你一次性设置完毕树莓派。(以macOS为例,包含windows和linux)史上最详细!一次性完成所有设置!

全网最全!本文详细描述了树莓派的安装,调试与优化,包含了绝大多数设置所需要的知识,一篇文章开启你的树莓派之旅。注意:本文不含任何项目!

Springsoda的博客 2万+

感应电机无速度传感器FOC控制原理与Simulink仿真实践

无速度传感器FOC控制是电机驱动领域的重要技术,通过算法重构实现仅依赖电气参数的闭环控制。其核心原理基于电机数学模型,利用Clark/Park变换和滑模观测器估算转子位置和转速。这种技术在工业伺服系统中具有显著价值,能有效降低系统成本并提高可靠性。典型应用场景包括纺织机械、风机驱动等需要精确转速控制的设备。本文以感应电机为例,详细解析了无感FOC的Simulink实现方法,特别关注滑模观测器设计和双闭环控制策略,为工程师提供可直接复用的参数调优经验。

weixin_29189987的博客 259

ST电机库实战:从状态机到稳健启动流程的深度解析

本文深度解析了ST电机库中状态机的核心作用与稳健启动流程。状态机作为电机控制的“交通指挥官”,通过IDLE、CHARGE_BOOT_CAP、ALIGNMENT等一系列状态的严格跳转,确保了永磁同步电机(PMSM)和直流无刷电机(BLDC)的安全启动与可靠运行,是避免硬件损坏和实现平稳控制的关键。

weixin_29161785的博客 226

POJO与JSON的序列化与反序列化

0x00 定义以及相关概念POJO,Plain Old Java Object,是一种简单的Java对象,一般就是有一些private属性及其属性getter、setter方法的类。这种对象只能用来装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。JSON,Javascript Object Notation,是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。其主要构建

baidu_zhongce的博客 1万+

FCKeditor 2.6.4 php版本任意文件上传——漏洞复现

一、漏洞描述 FCKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多Web项目和大型网站均采用了FCKeditor。 Fckeditor 低于 2.6.4 php 版本任意文件上传漏洞,当您的PHP环境配置为 GPC = Off 时可绕过currentfolder参数过滤上传脚本木马控制网站服务器 二、漏洞原理 漏洞版本:<=2.6.4 三、环境搭建

W小哥 1万+

java反射二

Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。 那么什么是Java的反射呢?       大家都知道,要让Java程序能够运行,那么就得让Java类要被Java虚拟机加载。Java类如果不被Java虚拟机加载,是不能正常运行的。现在我们运行的所有的程序都是在编译期的时候就已经知道了你所需要的那个类的已经被加载了...

漫随天外的博客 274

保姆级教程:用Verilog手把手实现一个MIPI CSI-2 D-PHY接收器(附PPI接口时序详解)

本文提供了一份详细的Verilog实现MIPI CSI-2 D-PHY接收器的教程,重点解析了PPI接口时序和deskew数据对齐技术。通过模块划分、时钟域处理、状态机设计和错误恢复机制等实战内容,帮助开发者掌握高速数据接收的核心技术,适用于嵌入式视觉系统开发。

weixin_30619101的博客 512

对称式目镜设计实例

对称式目镜设计实例

weixin_72050316的博客 1163

【Java高级】反射学习二——反射

一、反射入门 在方法区存在这么一些对象,叫做类对象,他们表述了我们写的所有的类,当我们new对象时会根据这些类对象,并调用其构造方法为我们创建实例。 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 简单的说:一个类有多个组成部分,例如:成员变量,方法,构造方法等。反射就是加载类,并解剖出类的各个组成部分。 Java反射机制主要提供了以下功能

骏马逸动,心随你动的博客 366

【Windows Server 2019】Active Directory Certificate Services 证书颁发机构的安装,配置和管理Ⅰ——AD CS的安装和配置

博文主要介绍了Windows Server 2019的证书颁发机构的安装和配置方法。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 4833

二、java中反射的使用

java中反射的使用1. 概念2. 为什么需要反射3. 反射Class类对象4. 常用方法5. 反射的应用5.1 获取类对象5.2 获取构造方法5.3 获取成员方法5.4 获取成员变量5.5 创建对象5.6案例6. 暴力反射6.1案例 1. 概念 Reflection(反射) 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,也有称作“自省”。反射非常强大,它甚至能直接操作程序的私有属性。我们前面学习都有一个概念,private的只能类内部访问,外部是不行的

丁花的博客 308

Vue和Vue-Element-Admin(六):集成中的CORS(跨域资源共享)问题

在vue-element-admin登录集成时候碰到跨域资源共享问题,CORS(Cross-origin resource sharing)是浏览器的技术规范,浏览器可以发起跨域请求但Javascript脚本不能,传统的ajax只能获取在同域名下的资源,但Html5允许ajax发起跨域请求,解决方案有:JSONP、Flash、IFrame、CORS。 一、CORS(跨域资源共享)问题 针对vue-element-admin的登录模块的后端接口完成后,前端调用时候出现报错,因为前端的端口是9527而后.

叶子叶来 9614

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java反射二:反射API

1、反射 API 用来生成 JVM 中的类、接口或则对象的信息。 1.Class 类:反射的核心类,可以获取类的属性,方法等信息。 2.Field 类:Java.lang.reflec包中的类,表示类的成员变量,可用来获取和设置类之中的属性值。 3.Method 类:Java.lang.reflec包中的类,表示类的方法,可用来获取类中的方法信息并执行方法。 4.Constructor 类: Java.lang.reflec 包中的类,表示类的构造方法。 2、反射使用步骤(获取 Cla...

春风化雨 765

android 蓝牙通讯demo

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

java反射专题二

作者:残阳丶 转自:https://www.cnblogs.com/cainiao-Shun666/p/8568314.html 一丶Class中常用方法详解 1)getFields() 只能获取到运行时类中及其父类中声明为public的属性 2)getDeclaredFields() 获取运行时类本身声明的所有属性 3)getMethods() 获取运行时类中及其父类中声明为...

一只小棉花的博客 291

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java反射 long_Java反射学习(二)

今天继续学习了java反射1.对象的拷贝功能class People {private Long id;private String name;private Integer age;public People() {}public People(Long id,String name,Integer age) {this.setId(id);this.setName(name);this.set...

weixin_34942265的博客 355

Java反射详解(二)

获取 Class对象 之后我们就可以获取类的信息以及基于这些信息进行一些操作,也就是我们所说的 反射。本篇来逐一介绍一下我们可以通过 Class对象 执行哪些操作。

晴空๓ 1484

Java 反射详解(二)

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的法的功能称为java语言的反射机制。 通过java语言中的反射机制可以操作字节码文件(可以读和修改字节码文件。)通过反射机制可以操作代码片段。(class文件。) .class说明:在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。J

qq_37080455的博客 326

java反射系列二

一.Class类 package reflect; /* *java.lang.class是反射的源头 *我们创建了一个类,通过编译(javac.exe),生成对应的.class文件,之后我们使 *用java.exe加载(JVM的类加载器完成的)此.class文件 *此.class文件加载到内存以后,就是一个运行时类存在缓存区,那么这个运行时 *类本身就是一个Class的实...

weixin_30657541的博客 66

Java反射二

点击查看Java反射一 ()一 .通过反射获得对象的无返回值方法eg:  @Test public void TestReflex() { dog = new DogBean("旺旺"); //获取该对象所在的信息 Class class3 = null; try { class3 = Class.forName("com.example.admi...

杨的博客 199

如何使用Java反射?(反射篇 二)

详细介绍Java反射的使用方法

DU9999999的博客 274

关于java反射的基础实践二

书接上回,反射一个对象中的属性值乘以1000,我们解决了,那么如果对象中有list呢,如下:怎么办? @Data @Accessors(chain = true) public class TestDto { private BigDecimal testOneExp; private BigDecimal testTwoExp; private String testThree; private List<TestDto> testFour;} 再测试一下 p...

FLY with WIND 143

Day43 Java反射(二)

本节主要讲解Java反射(二),从利用反射操作方法,利用反射操作方法里的参数和返回值,利用反射操作泛型,利用反射操作注解,利用反射操作数组等等帮助深刻理解Java反射。

yjp1240201821的博客 1560

【注解与反射二】java的反射机制

反射机制 动态语言VS静态语言 动态语言: 是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点讲就是在代码运行时代码可以根据某些条件改变自身结构。 主要动态语言:Object-C、C#、JavaScript、PHP、Python等。 静态语言: 与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java、C、C++。 Java不是动态语言,但Java可以称之为“准动态语言”。即Java有一定的动态性,我们可以利用反射机制

hbdhaj的博客 153
上一篇: JAVA反射机制(一)
下一篇: 代理模式
network_boy
博客等级 码龄1天 9粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值