検索

Java transient is a modifier keyword that is used to mark a variable whose value is not to be serialized during Serialization. If we do not want to save the value of a specific variable during the serialisation, then we can mark a variable as transient by using the transient keyword. As the name itself, transient indicates that it last for a short time or not permanent. When the JVM encounters the transient variable, it ignores the variable’s original value and saves it by its default data type value.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Syntax:

The following is the declaration transient keyword.

transient private <member variable>;</member>

or

private transient <member variable>;</member>

AS above mentioned, we can see that the data member defined as transient will not be serialized because it is marked by transient keyword for not to be serialized. We can define a transient data member in two ways, the same as above in the syntax.

Note that Serialization is a process that converts the state of an object into a byte stream. During serialization, if we do not want to save a variable’s value in the file, we can declare it as transient.

Examples of Transient Keyword in Java

Next, we write the java code to understand the transient keyword more clearly with the following example where we will use a transient keyword to define a member variable of a class and make this class subclass of Serializable to perform the serialization and deserialization, as below.

Example #1

Code:

//package demo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Employee implements Serializable{
private String name;
private String eid;
private int age;
//transient variable not serialized
private transient int projid = 104;
public Employee( String name, String eid, int age, int projid) {
this.age = age;
this.name = name;
this.eid = eid;
this.projid = projid;
}
@Override
public String toString() {
return "Employee ( name=" + name + ", eid=" + eid + ", age=" + age + ", projid=" + projid + ')';
}
}
public class Demo
{
public static void main(String[] args)
{
// create Employee class object which is Serializable
Employee e1 = new Employee( "John", "e106", 26, 104);
System.out.println("Employee object Before Serialization is : " + e1);
try {
FileOutputStream fw = new FileOutputStream("D:\\data.txt");
ObjectOutputStream ow = new ObjectOutputStream(fw);
ow.writeObject(e1);
System.out.println("Employee is successfully Serialized ");
// code for deserialization
FileInputStream fr = new FileInputStream("D:\\data.txt");
ObjectInputStream or = new ObjectInputStream(fr);
Employee de1 = (Employee) or.readObject();
System.out.println("Employee object successfully created from Serialized data.");
System.out.println("Employee object after deseriazliation is : " + de1);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Output:

Java 一時的

Code Explanation: As in the above code, the employee class has created, and the project id that is projid data member of the employee class is defined as transient, so the value projid will not be serialized and while writing an employee object to the file will not save the value of a projid in the file. And later in the code, an employee object is read back from that file and deserialize an object; we can see in the output that the printing projid of the employee object is 0, which is the default value for the transient variable projid because it is serialized.

Example #2

Next, we write the java code to understand the transient keyword and show that the transient keyword does not impact the static and final variable as transient.

Code:

//package demo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Employee implements Serializable{
private String name;
// Use of transient has no impact on static
private static String eid;
// Use of transient has no impact on final
private final int age;
//transient variable not serialized
private transient int projid = 104;
public Employee( String name, String eid, int age, int projid) {
this.age = age;
this.name = name;
this.eid = eid;
this.projid = projid;
}
@Override
public String toString() {
return "Employee ( name=" + name + ", eid=" + eid + ", age=" + age + ", projid=" + projid + ')';
}
}
public class Demo
{
public static void main(String[] args)
{
// create Employee class object which is Serializable
Employee e1 = new Employee( "John", "e106", 26, 104);
System.out.println("Employee object Before Serialization is : " + e1);
try {
FileOutputStream fw = new FileOutputStream("D:\\data.txt");
ObjectOutputStream ow = new ObjectOutputStream(fw);
ow.writeObject(e1);
// code for deserialization
FileInputStream fr = new FileInputStream("D:\\data.txt");
ObjectInputStream or = new ObjectInputStream(fr);
Employee de1 = (Employee) or.readObject();
System.out.println("Employee object after deseriazliation is : " + de1);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Output:

Java 一時的

Code Explanation: As in the above code, the employee class has created, and the eid data member is declared as static and transient, the age declare as final and transient, and porjid of the employee class is declared as only transient, so only the value of projid will not be serialized and while writing an employee object to the file, but others data member value will be serialized. we can see in the output that after desterilize an object is printing, the projid of the employee object is 0, and all other data members’ values are saved because they are not serialized.

Conclusion

As simple as, the name transient meaning is lasting for a short time or not permanent the same way transient keyword is used in java. The transient is a modifier keyword that is used to mark a variable whose value is not to be serialized during Serialization.

以上がJava 一時的の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、