java序列化和java反射机制认识

本文介绍了Java的序列化和反射机制。序列化用于保存和恢复对象状态,分为序列化和反序列化两个过程。反射机制则允许程序在运行时获取自身信息,包括类的详细信息,并能在运行时动态创建对象和编译。反射机制的优点在于灵活性,但可能对性能产生影响。
摘要由CSDN通过智能技术生成

一、序列化是什么?
   序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。 
   序列化分为两大部分:序列化和反序列化。

     (1)序列化—将数据分解成字节流,以便存储在文件中或在网络上传输。

     (2)反序列化—就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例

可以参考:http://www.cnblogs.com/xdp-gacl/p/3777987.html


二、反射机制

 (1)什么是反射机制 
     反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。


  (2)反射机制的优点与缺点 
        为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念,静态编译:在编译时确定类型,绑定对象,即通过。动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中,它的灵活性就表现的十分明显。比如,一个大型的软件,不可能一次就把把它设计的很完美,当这个程序编译后,发布了,当发现需要更新某些功能时,我们不可能要用户把以前的卸载,再重新安装新的版本,假如这样的话,这个软件肯定是没有多少人用的。采用静态的话,需要把整个程序重新编译一次才可以实现功能的更新,而采用反射机制的话,它就可以不用卸载,只需要在运行时才动态的创建和编译,就可以实现该能。 
    它的缺点是对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作。

  (3)用反射机制能干什么事 

  a:创建对应的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
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;
}
 
}


  b:编写获得数据库连接类:
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/11" ;
             String user =   "root" ;
             String password =   "root" ;
             conn =   DriverManager.getConnection(url, user, password);
         } catch (Exception e) {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KunQian_smile

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值