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

java关键字transient

 
阅读更多

1.在读java的源码时,遇到transient关键字声明变量。例如:

  // Generics and annotations support

    private transient String    signature;

    // generic info repository; lazily initialized

    private transient FieldRepository genericInfo;

在上面的代码中,不明白 signature和genericInfo声明有什么作用,而且用到了transient关键字修饰。

transient单词意思为瞬态,临时的意思。

对象序列化后读取对象时,瞬态属性不会被读取。

Fields declared as transient or static are ignored by the deserialization process.

对象实现序列化接口后反序列化时,不会创建新的对象,否则会创建。

示例代码:

package my.transientExceple.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;

//测试transient关键字有什么作用
public class LoggingInfo implements 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 "logging info:\n"+"userId:"+uid+",\n loggingDate:+"+loggingDate.toString()+
    			"\n password:"+password;
    }
	
    
    public static void main(String args[]){
    	LoggingInfo logInfo = new LoggingInfo("MIKE", "xxxx");   
    	//System.out.println(logInfo.toString());   
    	 try {
    		 ObjectOutputStream o = new ObjectOutputStream(   
    	                new FileOutputStream("logInfo.out")); 
    	    	 o.writeObject(logInfo); 
			o.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
    	/* File file=new File("logInfo.out");
    	 System.out.println(file.getAbsoluteFile());
    	 F:\workspace\MyMvc\logInfo.out
    	 */
    	 try  
    	 {   
    	    @SuppressWarnings("resource")
			ObjectInputStream in =new ObjectInputStream(   
    	                 new FileInputStream("logInfo.out"));   
    	    LoggingInfo logInfo1 = (LoggingInfo)in.readObject();   
    	    System.out.println(logInfo1.toString());   
    	 }   
    	 catch(Exception e) {//deal with exception}   
    	 }
    }
	
}

 

 

 

 

 

 

分享到:
评论

相关推荐

    Java关键字Transient与串行化

    ### Java关键字Transient与串行化 #### Transient关键字解析 在Java编程语言中,`transient`是一个非常重要的关键字,主要用于对象的串行化过程中。它用于标记对象中的某些字段,使得这些字段不会被串行化到持久...

    Java关键字transient

    在Java编程语言中,`transient`是一个非常重要的关键字,它与对象的序列化息息相关。序列化是将一个对象的状态转换为字节流的过程,这样就可以存储或在网络中传输。当我们标记一个字段为`transient`时,意味着该字段...

    java关键字总结文档

    ### Java关键字总结 Java是一种广泛使用的面向对象编程语言,它具备简单性、可移植性、高性能等特点。在Java中,关键字具有特殊的语法含义,不能用作标识符(例如变量名或方法名)。以下是对给定文件中提到的Java...

    Java_transient关键字

    ### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列化过程中对特定变量的控制。当一个类实现了`Serializable`接口时,其对象可以被序列化为一个持久化的...

    Java关键字详细解

    这篇文档《Java关键字详细解》将深入探讨Java中的关键字及其用途。 首先,我们来看看Java中的主要关键字。`public`、`private`、`protected`是访问修饰符,用于控制类、方法和变量的访问权限。`public`可以被任何...

    java关键字、保留字

    ### Java关键字详解 #### 概述 Java是一种广泛使用的面向对象编程语言,它拥有丰富的关键字集,用于控制程序的行为和结构。Java关键字是由Java语言预定义的标识符,具有特殊的含义,不能用作变量名、方法名或类名等...

    Java中的transient关键字.doc

    Java 中的 transient 关键字 在 Java 编程中,transient 关键字是一个非常重要的概念,它用来说明一个属性是临时的,不会被序列化。在 Java 中,序列化是指将对象的状态信息转换为字节流的过程,以便于对象在网络上...

    Java关键字

    Java关键字是编程的基础,它们是Java语言预定义的标识符,具有特殊含义并被Java编译器识别。在Java中,一共有51个关键字(包括保留字),但描述中提到的是48个,可能是因为某些关键字在特定上下文不常用或者被归类到...

    java关键字大全及解释

    下面是对Java关键字的详细解释: 1. `abstract`: 用于定义抽象类或抽象方法,表示类或方法没有具体实现,需要子类进行具体实现。 2. `boolean`: 表示逻辑值,只有两个可能的值,`true` 和 `false`。 3. `break`: ...

    java关键字

    ### Java关键字详解 #### 前言 Java作为一种广泛使用的编程语言,在软件开发领域占据了重要的地位。Java的关键字,即保留字,是Java语言中具有特殊意义的标识符,它们预定义并保留用于语言本身的语法结构。理解这些...

    java 关键字查询文档

    Java 共有 50 多个关键字,它们包括但不限于 `abstract`、`assert`、`boolean`、`break`、`byte`、`case`、`catch`、`char`、`class`、`const`(虽然未使用)、`continue`、`default`、`do`、`double`、`else`、`...

    Java之transient关键字.Java

    在Java编程语言中,`transient`关键字是一个非常重要的特性,它用于标记对象的某个成员变量不应该被序列化。当你创建一个可序列化的类(通过实现`Serializable`接口)时,如果你不想某些字段在序列化过程中被保存或...

    JAVA关键字

    Java关键字是编程的基础,它们是Java语言预定义的、具有特殊含义的标识符,不能作为变量名、方法名或类名。以下是对50个Java关键字的详细解释: 1. **abstract**:用于声明抽象类或抽象方法,不包含具体实现。 2. ...

    java关键字,适合新手的ppt

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

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

    Java关键字和命名规范是Java编程语言中的基础概念,它们对于编写清晰、规范的代码至关重要。Java关键字是Java语言内置的、具有特殊用途的保留字,而命名规范则是关于如何给类、方法、变量等命名的约定。 ### Java...

    search_keyword12.rar_Java关键字

    Java关键字是编程的基础,它们是Java语言预定义的标识符,具有特定的含义和功能,不能用作变量名、方法名或类名。在Java中,关键字是保留给编译器使用的,它们对于理解程序的结构和控制流程至关重要。本文将深入探讨...

    JAVA关键字总结(整理后最全最详细)

    下面是对Java关键字的详细总结,按照给出的部分内容进行排列: 1. `abstract`: - `abstract` 关键字用于声明抽象类或抽象方法。抽象类不能被实例化,只能作为其他类的基类。抽象方法没有具体的实现,必须在子类中...

    java关键字、标识符、注释

    ### Java关键字、标识符、注释详解 #### 关键字(Keywords) 在Java语言中,关键字是具有特殊意义的保留字,它们不能用作变量名、方法名或类名等标识符。Java的关键字用于定义程序结构的重要组成部分,如控制语句、...

Global site tag (gtag.js) - Google Analytics