Javaベースのリフレクション
クラスオブジェクトを作成するには? 2 つの方法があります:
class.forName("class name");
Class a = a.class;
2 つの違いは次のとおりです: forName() は静的変数の初期化に役立ちます。静的変数を自分で初期化する必要があります。リフレクションを通じて、クラスをオブジェクトに変更するメソッドを実装できます。あるクラスは別の A クラスに属し、下方変換時の判定に使用されます。
クラス オブジェクトを通じて、次の情報を取得できます。 :
class.getConstructors(); すべてのコンストラクターを取得します。 class.getConstructor(null); これらのメソッドは、コンストラクター con を返します。コンストラクター; オブジェクトは con.newInstance("parameters"); を通じて作成できます。
class.getFields(); すべてのフィールドを取得します。 class.getField("name"); 特定のパブリック固有フィールド (name) を取得します。
set を使用してメンバー変数を設定します。 set(obj, "Andy Lau"); このうち、obj はクラスによって生成されたオブジェクトです。
class のすべての public メソッドを取得します。 ; すべてのメソッドを取得します;
class.getMethod("メソッド名", String.class); 次の String.class はメソッド オブジェクトを返します。フィールドと同様に、最初にオブジェクトを生成します。この場合、メソッド実行関数 invoke () を使用します。obj はオブジェクト、20 は main() を直接反映することもできます。メソッド; class.getMethod("main", Stirng[].class); リフレクションを通じて、それを元のベースで実装し、リフレクションを実装するためにプロパティを読み取り、新しいクラスを作成し、一般的なチェックを回避するためにメソッドを実行します。特定のコンテナのクラス ファイルを呼び出して、そのメソッドを呼び出して一般的なチェックを回避することもできます。
さらに、リフレクションを通じて動的プロキシ モードを実装することもできます。
interface Subject{ public void doSomething(); } class RealSubject implements Subject{ public void doSomething(){ System.out.println("call doSomething()"); } } class ProxyHandler implements InvocationHandler{ private Object tar; public Object bind(Object tar){ this.tar = tar; return Proxy.newProxyInstance(tar.getClass().getClassLoader(), tar.getClass().getInterfaces(), this); } public Object invoke(Object proxy, Method method ,Object[] args) throws Throwable{ Object result = null; result = method.invoke(tar,args); return result; } } public class Test { public static void main(String[] args[]){ ProxyHandler proxy = new ProxyHandler(); Subject sub = (Subject) proxy.bind(new RealSubject()); sub.doSomething(); } }
を実装する ProxyHandler が使用されます。 InvocationHandler インターフェイスを使用し、実際のオブジェクトを渡すことによってプロキシ オブジェクトを取得します。パラメータは次のとおりです。 tar.getClass().getClassLoader() は実際のオブジェクトのクラス ローダー、tar.getClass().getInterfaces() は実際のオブジェクトのインターフェイスです。オブジェクト、およびこの InvocationHandler 自体は、リフレクション メカニズムを通じてプロキシ オブジェクトを取得します。同時に、このプロキシ オブジェクトのメソッド実行関数に、実行用の実際のオブジェクトを記述します。後続のメソッド呼び出しで最初に実際のオブジェクトのメソッドを呼び出すには、プロキシ オブジェクトのバインドを呼び出すときにオブジェクトを実際のオブジェクトに変換することを忘れないでください。
以上がJavaベースのリフレクションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

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

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

ホットトピック

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです
