1、 java的serialization提供了一个非常棒的存储对象状态的机制,说白了serialization就是把对象的状态存储到硬盘上去,等需要的时候就可以再把它读出来使用。但是在存储对象状态时,我们有时候会需要特定的对象数据在serialization时不进行存储。这时候 transient关键字就派上用场了。要关掉类的特定的数据域,可以使用transient关键字进行定义,这对于底层的java虚拟机来说,这个 transient类型的变量不是一个类的永久性的状态。
2、比如说在一个实体Bean中,transient和 static字段是非持久性字段,不能保存在数据库中。
另外,如果你的对象需要序列化到数据库、JDNI或通过Object流传递给其他对象的话,对象中的非持久性字段应该加transient关键字。
3、 你如果写了一个程序并需要序列化到本地或者数据库中(不只是你一个人需要用),并且因为测试的缘故,你认为加上了自己的一些信息,例如用户名,密码(例如数据库的身份),这样方便测试.但是,这些信息是肯定不应该被别人知道或者了解的,同时呢,又不想每次自己都去写都去改,这样,你可以用 transient定义这样的变量存储它们.
4、 下面是java规范中对transient关键字的解释:
The transient marker is not fully specified by The Java Language Specification but is used in object serialization to mark member variables that should not be serialized.
5、java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身。这可以极大地方便网络上的一些操作,但同时,因为涉及到安全问题,所以并不希望把类里面所有的东西都能存储(因为那样,别人可以通过序列化知道类里面的内容),那么我们就可以用上transient这个关键字,它的意思是临时的,即不会随类一起序列化到本地,所以当还原后,这个关键字定义的变量也就不再存在。
分享到:
相关推荐
### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列化过程中对特定变量的控制。当一个类实现了`Serializable`接口时,其对象可以被序列化为一个持久化的...
主要介绍了java中transient关键字用法,以实例形式分析了java中transient关键字的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
在给定的文件列表中,除了与`transient`关键字相关的`Java之transient关键字.md`文件,其他如`javaweb\Tomcat.md`、`javaweb\Cookie、Session、localStorage、sessionStorage区别和用法.md`等文件可能涉及Web开发中...
Java transient关键字原理解析 Java 中的 transient 关键字是一个重要的概念,它被用来表示变量将不被序列化处理。那么在理解 transient 关键字之前,我们先了解下什么是序列化。 序列化是对象进行持久化处理,也...
深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字) Java序列化和反序列化是Java虚拟机中的一种重要机制,它们可以将Java对象转换为二进制数据,然后...
哎,虽然自己熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~...
transient关键字的使用可以提高网络传输性能,因为它可以避免将无效元素序列化,减少网络传输的数据量。同时,transient关键字也可以用于保障数据的安全,因为它可以避免将敏感数据序列化。 transient关键字和序列...
如果一个字段包含敏感信息,应该考虑使用更安全的方法来处理,例如加密,而不是仅仅依赖`transient`来避免序列化。 此外,`transient`关键字对Java的内存模型(JMM)没有影响,它只作用于序列化过程。在对象的生命...
`GuestLoggingInfo`类同样使用了`transient`关键字来标记`pwd`字段。但是,它在构造函数中为`uid`和`pwd`字段提供了默认值,这样即使在序列化后反序列化,由于`pwd`字段的`transient`属性,`toString()`方法仍然能够...
使用`transient`关键字可以确保这些信息不会被序列化,从而保护了数据的安全性。 4. **自定义序列化逻辑**:尽管`transient`字段不会自动序列化,但程序员可以编写自定义的序列化和反序列化方法来处理这些字段。...
### Java关键字的用法 Java作为一种广泛使用的编程语言,拥有丰富的关键字来支持其核心功能与特性。本文将详细介绍部分重要的Java关键字及其用法。 #### 1. `abstract` `abstract`关键字用于定义抽象类或抽象方法...
根据给定文件中的标题、描述、标签以及部分内容,本文将详细介绍Java中常用的关键字及其用法,这些知识点对于Java初学者来说非常重要。 ### 1. Abstract `abstract` 是 Java 中的一个关键字,用于声明抽象类或抽象...
`void`关键字表示无返回值的方法,用于声明不返回任何值的方法。 ### 46. volatile `volatile`关键字用于声明线程可见的变量,确保变量的读写操作对所有线程可见。 ### 47. while `while`循环用于重复执行一段...
`transient`关键字表明字段不应该序列化。`native`表示方法的实现是在其他地方(如C/C++)完成的,通常与Java的JNI(Java Native Interface)一起使用。 最后,`package`关键字用于组织类和接口,提供命名空间,...
Java是一种广泛使用的面向对象编程语言,它拥有丰富的关键字集,用于控制程序的行为和结构。Java关键字是由Java语言预定义的标识符,具有特殊的含义,不能用作变量名、方法名或类名等自定义标识符。本文将详细介绍...
总结一下,`final`关键字确保数据的不可变性,提供安全的继承和方法调用,而`transient`关键字则允许程序员控制序列化过程,排除敏感或临时数据。在编写Java程序时,合理利用这两个关键字可以提高代码的可维护性和...
21. `transient`:`transient`关键字用于标记变量,表示该变量不应序列化,即在对象序列化和反序列化时不保存这个变量的值。 22. `try-catch-finally`:`try`块包含可能会抛出异常的代码,`catch`处理这些异常,`...
Java的关键字是被语言本身预定义的标识符,它们不能作为变量名、类名或者方法名。Java的关键字一共51个,包括访问控制修饰符(如public、private、protected)、控制流程关键字(如if、else、for、while)、数据类型...