`
xiang37
  • 浏览: 428378 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

transient关键字的理解与应用

 
阅读更多

下面这段话来自百度百科:

 

java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。

Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。

 

下面给出示例:

 

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.xiva.domain;

import java.io.Serializable;

/**
 *
 * @author Xiva
 */
public class Traffic implements Serializable{
    
    private int logId;
    
    private String logName;
    
    private String logPosition;
    
    private String logCarNumber;
    
    private transient String logTime;

    
    public String getLogCarNumber() {
        return logCarNumber;
    }

    public void setLogCarNumber(String logCarNumber) {
        this.logCarNumber = logCarNumber;
    }

    public int getLogId() {
        return logId;
    }

    public void setLogId(int logId) {
        this.logId = logId;
    }

    public String getLogName() {
        return logName;
    }

    public void setLogName(String logName) {
        this.logName = logName;
    }

    public String getLogPosition() {
        return logPosition;
    }

    public void setLogPosition(String logPosition) {
        this.logPosition = logPosition;
    }

    public String getLogTime() {
        return logTime;
    }

    public void setLogTime(String logTime) {
        this.logTime = logTime;
    }
    
}

 

调用示例:

 

 

package com.xiva.baseKnowledge;

import com.xiva.domain.Traffic;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author XIVA
 */
public class ReverseString {
    
    public static String reverseStr(String orignalStr){
        StringBuilder sBuffer = new StringBuilder(orignalStr);
        sBuffer.reverse();
        return sBuffer.toString();
    }
    
    public static void transientExample() {
        Traffic traf = new Traffic();
        traf.setLogId(1);
        traf.setLogName("xiva" + 1);
        traf.setLogTime("20120514" + 1);
        FileOutputStream f;
        FileInputStream fi;
        ObjectOutputStream s;
        try {
            f = new FileOutputStream("E:\\tmp.txt");
            s = new ObjectOutputStream(f);
            s.writeObject(traf);
            s.flush();
        } catch (IOException ex) {
            Logger.getLogger(ReverseString.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            fi= new FileInputStream("E:\\tmp.txt");
            ObjectInputStream  oi = new ObjectInputStream(fi);
            Traffic traf01 = (Traffic)oi.readObject();
            System.out.print(traf01.getLogId() + ":" + traf01.getLogName() + ":" + traf01.getLogTime());
        } catch (Exception ex) {
            Logger.getLogger(ReverseString.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
    public static void main(String[] args){
//        String reString = reverseStr("ABCDEFG");
//        int firNum = 7;
//        int reNum = firNum >> 1;
//        System.out.println(reNum);
//        System.out.println(reString);
        transientExample();
    }
    
}

运行结果为:1:xiva1:null

 

从运行结果可以看出:

使用了transient属性的对象不能被反序列化的,也可以这样说,一个对象的属性被声明为transient,则在持久化的过程中会被忽略。

 

当某些属性我们需要用到,但没必要持久化的时候,我们可以加上关键词transient。

 

 

分享到:
评论

相关推荐

    Java_transient关键字

    ### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列...同时,理解`transient`与`volatile`之间的区别也是处理复杂Java应用中的多线程和序列化问题的关键。

    Java transient关键字使用小记

    - `transient`关键字不能应用于静态变量,因为静态变量属于类而非对象,它们在类加载时就存在,不参与序列化过程。 - 如果一个类的所有实例字段都是`transient`的,那么这个类就没有必要实现`Serializable`接口,...

    Java transient关键字原理解析

    Java transient关键字原理解析 Java 中的 transient 关键字是一个重要的概念,它被用来表示变量将不被序列化处理。那么在理解 transient 关键字之前,我们先了解下什么是序列化。 序列化是对象进行持久化处理,也...

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字)

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字) Java序列化和反序列化是Java虚拟机中的一种重要机制,它们可以将Java对象转换为二进制数据,然后...

    Java关键字Transient与串行化

    在Java编程语言中,`transient`关键字与对象的序列化(serialization)机制密切相关,它在处理对象状态的持久化时扮演着关键角色。本文将深入探讨`transient`关键字的功能、用途以及它如何影响Java对象的序列化过程。 ...

    java关键字transient

    **transient关键字的作用** `transient`关键字用于标记一个实例变量,表示这个变量不应该作为对象状态的一部分进行序列化。当一个对象被序列化时,`transient`修饰的变量会被忽略,它们的值不会包含在序列化的表示中...

    transientDemo.zip

    1. `transient`关键字只能应用于实例变量,不能应用于静态变量,因为静态变量属于类,而不是特定的实例。 2. `transient`变量在序列化和反序列化过程中不会被持久化,因此它们的值在反序列化后将丢失。 3. 当一个类...

    48个关键字

    下面将详细介绍这48个Java关键字,它们是构成Java程序的基础,掌握这些关键字对于理解和编写Java代码至关重要。 ### 1. abstract `abstract`关键字用于声明抽象类或抽象方法。抽象类不能实例化,主要用于提供子类...

    Java的关键字与保留字

    在深入探讨Java的关键字与保留字之前,我们首先需明确两个概念:关键字和保留字。...掌握这些关键字和保留字是Java编程的基础,能够帮助程序员更准确地理解和应用语言特性,从而编写出更加高效、健壮的代码。

    JAVA关键字

    Java关键字是编程的基础,它们是Java语言预定义的、具有特殊含义的标识符,不能作为变量名、方法名或类名。...通过深入学习和实践,开发者能够更好地理解和利用Java的关键字来构建复杂的应用程序。

    01-Java语言基础(关键字)

    以上仅是Java关键字的一部分,还有许多其他关键字,如`synchronized`, `volatile`, `transient`, `native`, `strictfp`等,它们各自承担着特定的功能。理解和熟练使用这些关键字是成为一名合格的Java程序员的基础。...

    search_keyword12.rar_Java关键字

    - 其他关键字:如void、static、final、abstract、native、transient、volatile等,各有特定用途。 2. Java关键字应用示例: - `public class HelloWorld {` 这行代码定义了一个公共类HelloWorld,可供其他类访问...

    JAVA中的保留关键字

    ### JAVA中的保留关键字 在Java编程语言中,关键字与保留关键字是极其重要的组成部分,它们定义了语言的基本结构和语法规则。...希望本文能够帮助您更好地理解Java中的关键字和保留关键字,并在日常开发中加以应用。

    Java的关键字与标识符小结

    "Java关键字与标识符小结" Java语言中,关键字和标识符是两个重要的概念。关键字是被Java语言赋予了特殊含义的单词,总共有50个。...它们是Java语言的基础知识,理解和应用它们可以帮助我们更好地编程。

    第02章 Java编程基础 05 关键字与转义字符

    首先,我们来深入理解Java中的关键字。Java的关键字主要包括`abstract`, `assert`, `boolean`, `break`, `byte`, `case`, `catch`, `char`, `class`, `const`, `continue`, `default`, `do`, `double`, `else`, `...

    java关键字整理

    本文将详细介绍Java中的50个关键字,通过具体的例子帮助读者更好地理解和应用这些关键字。 #### A系列关键字 - **abstract**:此关键字用于声明抽象类和抽象方法。抽象类不能被实例化,主要用于被继承;抽象方法则...

    java关键字和java命名规范.pdf

    Java关键字和命名规范是Java编程语言中的基础概念,它们...遵循Java命名规范不仅可以使代码易于阅读和理解,而且有助于团队协作和代码维护。在实际开发中,合理地应用这些规范对于编写出高质量的Java程序是非常重要的。

    java关键字

    本资料整理了Java中的常用关键字,旨在帮助初学者更好地理解和记忆,从而提升编程效率。 1. **访问控制关键字**: - `public`:公共的,任何类都能访问。 - `private`:私有的,只能在定义它的类内部访问。 - `...

    java关键字的使用详情

    这些关键字在Java编程中起着至关重要的作用,理解并熟练运用它们是编写高效、健壮代码的基础。在实际开发中,结合工具如IDEA的代码提示,可以更好地利用这些关键字来优化代码。通过阅读《关键字用法总结.doc》文档,...

Global site tag (gtag.js) - Google Analytics