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与串行化 #### Transient关键字解析 在Java编程语言中,`transient`是一个非常重要的关键字,主要用于对象的串行化过程中。它用于标记对象中的某些字段,使得这些字段不会被串行化到持久...
在Java编程语言中,`transient`是一个非常重要的关键字,它与对象的序列化息息相关。序列化是将一个对象的状态转换为字节流的过程,这样就可以存储或在网络中传输。当我们标记一个字段为`transient`时,意味着该字段...
### Java关键字总结 Java是一种广泛使用的面向对象编程语言,它具备简单性、可移植性、高性能等特点。在Java中,关键字具有特殊的语法含义,不能用作标识符(例如变量名或方法名)。以下是对给定文件中提到的Java...
### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列化过程中对特定变量的控制。当一个类实现了`Serializable`接口时,其对象可以被序列化为一个持久化的...
这篇文档《Java关键字详细解》将深入探讨Java中的关键字及其用途。 首先,我们来看看Java中的主要关键字。`public`、`private`、`protected`是访问修饰符,用于控制类、方法和变量的访问权限。`public`可以被任何...
### Java关键字详解 #### 概述 Java是一种广泛使用的面向对象编程语言,它拥有丰富的关键字集,用于控制程序的行为和结构。Java关键字是由Java语言预定义的标识符,具有特殊的含义,不能用作变量名、方法名或类名等...
Java 中的 transient 关键字 在 Java 编程中,transient 关键字是一个非常重要的概念,它用来说明一个属性是临时的,不会被序列化。在 Java 中,序列化是指将对象的状态信息转换为字节流的过程,以便于对象在网络上...
Java关键字是编程的基础,它们是Java语言预定义的标识符,具有特殊含义并被Java编译器识别。在Java中,一共有51个关键字(包括保留字),但描述中提到的是48个,可能是因为某些关键字在特定上下文不常用或者被归类到...
下面是对Java关键字的详细解释: 1. `abstract`: 用于定义抽象类或抽象方法,表示类或方法没有具体实现,需要子类进行具体实现。 2. `boolean`: 表示逻辑值,只有两个可能的值,`true` 和 `false`。 3. `break`: ...
### Java关键字详解 #### 前言 Java作为一种广泛使用的编程语言,在软件开发领域占据了重要的地位。Java的关键字,即保留字,是Java语言中具有特殊意义的标识符,它们预定义并保留用于语言本身的语法结构。理解这些...
Java 共有 50 多个关键字,它们包括但不限于 `abstract`、`assert`、`boolean`、`break`、`byte`、`case`、`catch`、`char`、`class`、`const`(虽然未使用)、`continue`、`default`、`do`、`double`、`else`、`...
在Java编程语言中,`transient`关键字是一个非常重要的特性,它用于标记对象的某个成员变量不应该被序列化。当你创建一个可序列化的类(通过实现`Serializable`接口)时,如果你不想某些字段在序列化过程中被保存或...
Java关键字是编程的基础,它们是Java语言预定义的、具有特殊含义的标识符,不能作为变量名、方法名或类名。以下是对50个Java关键字的详细解释: 1. **abstract**:用于声明抽象类或抽象方法,不包含具体实现。 2. ...
对于新手来说,理解Java的关键字是非常重要的一步,因为它们构成了语言的基础并指导了代码的结构和行为。 Java的关键字是被语言本身保留的词汇,它们有特定的含义和功能。例如,`byte`, `short`, `int`, `long`, `...
Java关键字和命名规范是Java编程语言中的基础概念,它们对于编写清晰、规范的代码至关重要。Java关键字是Java语言内置的、具有特殊用途的保留字,而命名规范则是关于如何给类、方法、变量等命名的约定。 ### Java...
Java关键字是编程的基础,它们是Java语言预定义的标识符,具有特定的含义和功能,不能用作变量名、方法名或类名。在Java中,关键字是保留给编译器使用的,它们对于理解程序的结构和控制流程至关重要。本文将深入探讨...
下面是对Java关键字的详细总结,按照给出的部分内容进行排列: 1. `abstract`: - `abstract` 关键字用于声明抽象类或抽象方法。抽象类不能被实例化,只能作为其他类的基类。抽象方法没有具体的实现,必须在子类中...
### Java关键字、标识符、注释详解 #### 关键字(Keywords) 在Java语言中,关键字是具有特殊意义的保留字,它们不能用作变量名、方法名或类名等标识符。Java的关键字用于定义程序结构的重要组成部分,如控制语句、...