匿名内部クラスのパフォーマンスの問題は、使用するたびに再作成されることです。これは、次の方法で最適化できます。 1. 匿名内部クラスをローカル変数に格納します。 2. 非静的内部クラスを使用します。ラムダ式を使用します。実際のテストでは、ラムダ式の最適化が最も効果的であることが示されています。
#Java 匿名内部クラスによるパフォーマンスの最適化
はじめに
匿名内部クラスは次のとおりです。明示的な名前を持たない匿名クラス。これらは、インターフェイスや継承されたクラスを迅速に実装するオブジェクトを作成するメソッドでよく使用されます。匿名内部クラスは使用すると便利ですが、パフォーマンスに悪影響を与える可能性もあります。パフォーマンスの問題
匿名内部クラスのパフォーマンスの問題は、主に、内部クラスが使用されるたびに再作成されるという事実に起因します。これにより、不必要なオブジェクトの割り当てと初期化のオーバーヘッドが発生します。最適化戦略
匿名内部クラスのパフォーマンスを最適化するための主な戦略は、使用されるたびに内部クラスを再作成しないようにすることです。これは次の方法で実現できます:1. ローカル変数に匿名内部クラスを保存する
// 每次使用时新建匿名内部类 JButton button = new JButton(); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // ... } }); // 将匿名内部类存储在局部变量中 ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // ... } }; button.addActionListener(listener);
2. 非静的内部クラスを使用する
非静的内部クラスは、外部クラスのインスタンス変数とメソッドにアクセスできます。匿名内部クラスを非静的内部クラスとして宣言すると、外部クラスを使用するたびに再作成する必要がなくなります。public class MyFrame { private JButton button; public MyFrame() { button = new JButton(); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 可以访问外部类的变量和方法 System.out.println(button.getText()); } }); } }
3. ラムダ式の使用
Java 8 以降では、匿名内部クラスの代わりにラムダ式を使用できます。ラムダ式はより簡潔であり、オブジェクトの繰り返し作成を回避します。JButton button = new JButton(); button.addActionListener(e -> System.out.println(button.getText()));
実践的なケース
以下は、匿名内部クラスの最適化のパフォーマンスを示す実践的なケースです:public class Benchmark { public static void main(String[] args) { long startTime = System.currentTimeMillis(); // 使用匿名内部类 for (int i = 0; i < 100000; i++) { JButton button = new JButton(); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // ... } }); } long endTime = System.currentTimeMillis(); System.out.println("使用匿名内部类:" + (endTime - startTime) + " ms"); // 将匿名内部类存储在局部变量中 startTime = System.currentTimeMillis(); ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // ... } }; for (int i = 0; i < 100000; i++) { JButton button = new JButton(); button.addActionListener(listener); } endTime = System.currentTimeMillis(); System.out.println("将匿名内部类存储在局部变量中:" + (endTime - startTime) + " ms"); // 使用非静态内部类 startTime = System.currentTimeMillis(); class MyActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // ... } } for (int i = 0; i < 100000; i++) { JButton button = new JButton(); button.addActionListener(new MyActionListener()); } endTime = System.currentTimeMillis(); System.out.println("使用非静态内部类:" + (endTime - startTime) + " ms"); // 使用 lambda 表达式 startTime = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { JButton button = new JButton(); button.addActionListener(e -> { // ... }); } endTime = System.currentTimeMillis(); System.out.println("使用 lambda 表达式:" + (endTime - startTime) + " ms"); } }
出力:
使用匿名内部类:2256 ms 将匿名内部类存储在局部变量中:142 ms 使用非静态内部类:2232 ms 使用 lambda 表达式:56 ms出力が示すように、ラムダ式を使用すると、匿名内部クラスのパフォーマンスを大幅に最適化できます。
以上がJava 匿名内部クラスのパフォーマンスを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール
