ホームページ Java &#&チュートリアル 値を渡す Java 匿名内部クラス

値を渡す Java 匿名内部クラス

Dec 15, 2016 pm 01:01 PM
匿名内部クラス

Nutz では、匿名内部クラスを使用する必要がある場面が多く、値の受け渡しについて混乱している子も多いので、ここで説明します

受信:

//匿名内部类,只能访问final的本地变量及方法参数 
public void addUser(final String name, String passwd, final String userType) { 
    User user = null; 
    if ("admin".equal(userType)) 
        user = new AdminUser(name, passwd); //仅作演示. 
    else 
        user = new User(name, passwd); 
    final User _user = user; //因为user变量不能设置为final,所以需要新加一个变量来中转 
    Trans.run(new Atom(){ 
        public void run() { 
            dao.insert(_user); 
            if (log.isDebugEnable()) 
                log.debugf("Add user id=%d, name=%s , type=%s", _user.getId(), name, userType); 
        } 
    }); 
}
ログイン後にコピー

送信 (メソッドの戻り値の取得など) :

メソッド 1 – オブジェクト配列メソッドは、最終的な Object オブジェクト配列を使用して必要な値を保存します。

public long countUser(final String userType) { 
    final Object[] objs = new Object[1]; 
    Trans.run(new Atom(){ 
        public void run() { 
            objs[0] = dao.count(User.class, Cnd.where('userType', '=', userType)); 
        } 
    }); 
    return ((Number)objs[0]).longValue(); 
}
ログイン後にコピー


メソッド 2 – ThreadLocal メソッドは、ThreadLocal を使用して結果を保存します。この ThreadLocal は静的であり、アプリ全体で使用されます

private static final ThreadLocal re = new ThreadLocal(); //自行补上泛型Object 
public long countUser(final String userType) { 
    Trans.run(new Atom(){ 
        public void run() { 
            re.set(dao.count(User.class, Cnd.where('userType', '=', userType))); 
        } 
    }); 
    return ((Number)re.get()).longValue(); //严谨一点的话,应该将ThreadLocal置空 
}
ログイン後にコピー


メソッド 3 – Molecule メソッド Molecule クラスは、Runnable インターフェイスと Atom インターフェイスを実装し、値を取得/設定するための 2 つのメソッドを追加します。


その他の Java 匿名内部クラスの値の受け渡しに関連する記事については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java の匿名内部クラスはメモリ リークの問題をどのように解決しますか? Java の匿名内部クラスはメモリ リークの問題をどのように解決しますか? May 01, 2024 pm 10:30 PM

匿名の内部クラスはメモリ リークを引き起こす可能性があります。問題は、匿名の内部クラスが外部クラスへの参照を保持し、外部クラスのガベージ コレクションが妨げられることです。解決策には次のものが含まれます。 1. 弱参照を使用します。外部クラスが強参照によって保持されなくなった場合、ガベージ コレクターは弱い参照オブジェクトをすぐにリサイクルします。ガベージ コレクション中にメモリが必要になるため、ソフト参照オブジェクトがリサイクルされます。 Android アプリケーションなどの実戦では、匿名内部クラスによるメモリ リークの問題は、弱参照を使用することで解決でき、リスナーが不要な場合には匿名内部クラスを再利用できます。

Java の匿名内部クラスの設計パターンは何ですか? Java の匿名内部クラスの設計パターンは何ですか? May 02, 2024 pm 04:42 PM

匿名内部クラスは、明示的な名前を持たず、new 式を通じて作成される Java の特別な内部クラスであり、主に特定のインターフェイスの実装または抽象クラスの拡張に使用され、作成直後に使用されます。一般的な匿名内部クラスの設計パターンには次のものがあります。 アダプター パターン: 1 つのインターフェイスを別のインターフェイスに変換します。戦略パターン: アルゴリズムの定義と置換。オブザーバー パターン: オブザーバーを登録し、イベントを処理します。これは、文字列の長さによる TreeSet の並べ替え、匿名スレッドの作成など、実際のアプリケーションで非常に役立ちます。

Java 匿名内部クラスが使用に適さないのはどのようなシナリオですか? Java 匿名内部クラスが使用に適さないのはどのようなシナリオですか? May 03, 2024 pm 05:42 PM

匿名内部クラスは、プライベート メンバーにアクセスする必要がある、複数のインスタンスが必要な、継承が必要な、ジェネリック型にアクセスする必要がある場合の使用には適していません。

Java の匿名内部クラスの利点は何ですか? Java の匿名内部クラスの利点は何ですか? Apr 30, 2024 am 11:39 AM

匿名内部クラスは、サブクラス化、コードの簡素化、およびイベント (ボタンのクリックなど) の処理を​​容易にする特別な内部クラスとして Java で使用されます。実際のケースは次のとおりです。 イベント処理: 匿名の内部クラスを使用して、ボタンのクリック イベント リスナーを追加します。データ変換: Collections.sort メソッドと匿名内部クラスをコンパレータとして使用してコレクションを並べ替えます。

Java の匿名内部クラスでよくある間違いは何ですか? Java の匿名内部クラスでよくある間違いは何ですか? May 02, 2024 am 09:03 AM

匿名内部クラスの使用エラー: 非スレッドセーフ環境で未宣言の例外をキャッチすることを使用してスコープ外の変数にアクセスする

Java 匿名内部クラスの制限は何ですか? Java 匿名内部クラスの制限は何ですか? May 01, 2024 pm 02:18 PM

匿名内部クラスの制限には、外部ローカル変数にアクセスできないこと、チェックされたコードの冗長性をスローできないこと、および

Java 匿名内部クラスのパフォーマンスを最適化するにはどうすればよいですか? Java 匿名内部クラスのパフォーマンスを最適化するにはどうすればよいですか? May 02, 2024 am 08:48 AM

匿名内部クラスのパフォーマンスの問題は、それらが使用されるたびに再作成されることです。これは、次の戦略によって最適化できます。 1. 匿名内部クラスをローカル変数に格納する。 2. 非静的内部クラスを使用する。 3. ラムダを使用する。表現。実際のテストでは、ラムダ式の最適化が最も効果的であることが示されています。

Java の匿名内部クラスはスレッドにどのように適用されますか? Java の匿名内部クラスはスレッドにどのように適用されますか? May 02, 2024 pm 01:57 PM

匿名の内部クラスにより、マルチスレッド コードの作成が簡素化され、名前を付ける必要がなくなり、スレッド クラスの即時定義と使用が可能になります。主な利点はコードを簡素化できることですが、コードを拡張できないという制限があります。 1 つまたは 2 つのスレッドをすばやく作成する必要がある場合に使用します。より複雑なロジックが必要な場合は、別のクラス ファイルを作成する必要があります。

See all articles