`
moita2008
  • 浏览: 8309 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

新手看到java中的transient

阅读更多
引用
最近一段时间想把集合部分复习下,上午没事情做,读读jdk自带的src,看ArrayList类时,第二条语句难倒了我!

private transient Object[] elementData;
transient关键字是什么意思啊!学java零零散散也有1年了,真是孤陋寡闻啊……
看看下面的例子,一个登陆时,密码与ID,密码最后没打印,就会明白transient 是干什么了。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Date;

public class LoggingInfo implements java.io.Serializable {

    private static final long serialVersionUID = 1L;
    private Date loggingDate = new Date();
    private String uid;
    private transient String pwd;

    LoggingInfo(String user, String password) {
        uid = user;
        pwd = password;
    }

    public String toString() {
        String password = null;
        if (pwd == null) {
            password = "NOT SET";
        } else {
            password = pwd;
        }
        return "logon info: \n   " + "user: " + uid + "\n   logging date : "
                + loggingDate.toString() + "\n   password: " + password;
    }

    public static void main(String[] args) {
        
        LoggingInfo logInfo = new LoggingInfo("MIKE", "MECHANICS");
        System.out.println(logInfo.toString());
        try {
            ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream(
                    "logInfo.out"));
            o.writeObject(logInfo);
            o.close();
        } catch (Exception e) {// deal with exception

        }

        // To read the object back, we can write
        try {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(
                    "logInfo.out"));
            LoggingInfo logInfo1 = (LoggingInfo) in.readObject();
            System.out.println(logInfo1.toString());
        } catch (Exception e) {// deal with exception

        }
    }
}

引用
在上面代码中,transient变量的值不会被写入到对象流中,由transient修饰的变量在序列化时不保存状态

打印结果:
logon info:
   user: MIKE
   logging date : Wed Mar 18 02:43:51 GMT 2009
   password: MECHANICS
logon info:
   user: MIKE
   logging date : Wed Mar 18 02:43:51 GMT 2009
   password: NOT SET
分享到:
评论
4 楼 unsid 2009-03-23  
foreverandever 写道
如此,有何用?


在对象传输的情况下,有些域是"瞬时的",也就是说只与当前进程环境相关,出了这个进程就没有意义了,这样的域是"本地化的",没有序列化的价值,标为瞬时态的.
3 楼 foreverandever 2009-03-23  
如此,有何用?
2 楼 moita2008 2009-03-23  
可以这么理解..
1 楼 foreverandever 2009-03-19  
也就是说不能被 持久化?

相关推荐

    java关键字,适合新手的ppt

    对于新手来说,理解Java的关键字是非常重要的一步,因为它们构成了语言的基础并指导了代码的结构和行为。 Java的关键字是被语言本身保留的词汇,它们有特定的含义和功能。例如,`byte`, `short`, `int`, `long`, `...

    Java编程基本概念

    Java编程基本概念 Java编程基本概念是Java语言的基础知识,了解这些基本概念对于深入学习Java编程至关重要。本文将详细介绍Java编程的基本概念,包括标识符、...这对于学习Java编程的新手和老手都具有很高的参考价值。

    整理后java开发全套达内学习笔记(含练习)

    进行高精度运算可以用java.math包中BigDecimal类中的方法。 自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时,加上“final”关键词来限定,这个...

    JPA实例,新手必备之佳品,记得查看ReadMe.txt

    Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的数据。它是Java Enterprise Edition(Java EE)和Java Standard Edition(Java SE)的一部分,提供了对象/关系映射(ORM)工具,使得...

    JPA教程 JPA pdf文档,实例解析

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的数据。它为Java开发者提供了一种对象关系映射(ORM)...因此,无论你是Java新手还是有经验的开发者,学习并掌握JPA都是十分有价值的。

    hibernat培训

    本培训适合对Java、SQL、JDBC有一定了解的新手,旨在帮助学员理解O/R Mapping原理,掌握Hibernate的使用,并能在实际项目中应用。 **一、持久化层——O/R Mapping** 在基于B/S的三层架构中,持久化层是负责数据...

    Hibernate开发手册

    - **瞬时态 (Transient)**:当一个对象刚被创建但还没有被保存到数据库中时的状态。 - **持久态 (Persistent)**:当一个对象已经被保存到数据库,并且在当前 Session 的缓存中时的状态。 - **特点**:此时对象可以...

    Hibernate快速入门

    Hibernate作为Java领域中最流行的ORM框架,提供了一种高效且灵活的数据访问解决方案。 2. **Hibernate架构** Hibernate主要由配置文件(hibernate.cfg.xml)、实体类(Entity)、持久化接口(Hibernate Session)...

Global site tag (gtag.js) - Google Analytics