Javaのリフレクションメカニズムの原理は何ですか

coldplay.xixi
リリース: 2020-10-23 11:04:07
オリジナル
47596 人が閲覧しました

Java リフレクション メカニズムの原則: 1. どのクラスについても、このクラスのすべてのプロパティとメソッドを知ることができ、どのオブジェクトについても、そのメソッドのいずれかを呼び出すことができます; 2. すべてはオブジェクトであり、そしてクラス これもオブジェクトです; 3. [Animal.class] がハードディスク上にあるときはファイルですが、メモリにロードされるとオブジェクトとみなすことができます。

Javaのリフレクションメカニズムの原理は何ですか

#Java リフレクション メカニズムの原理:

# 1. リフレクション メカニズムの概念:

は、実行状態では、どのクラスについても、そのクラスのすべてのプロパティとメソッドを知ることができ、また、どのオブジェクトについても、そのメソッドのいずれかを呼び出すことができることを意味します。この種の動的な情報の取得と、オブジェクトの動的呼び出し このメソッドの機能は Java 言語のリフレクション機構と呼ばれます

2. リフレクション機構の応用:

動的プロキシ、スライスの生成指向プログラミング (メソッド Stack フレームの呼び出しの前後に追加).

3. 反映メカニズムの原理:

1. まず明確な概念: すべてはオブジェクトです----クラスもオブジェクトです。

2. 次に、クラスの内容を理解します: 修飾子コンストラクター フィールド メソッド。

3. 次に、読み込みを理解します。 Animal.class はハードディスク上にあるファイルであり、メモリにロードされるとオブジェクト、java.lang.class のオブジェクトとみなされます。 Animal.class オブジェクトはインスタンス化中に生成されます。2 つのオブジェクトの違いは何ですか?

以下に示すように、上記の Animal.class オブジェクトは java.lang.class のオブジェクトであり、次のオブジェクトは java.lang.class のオブジェクトです。 Animal.class のインスタンス化によって生成されたオブジェクト

Javaのリフレクションメカニズムの原理は何ですか

4 . Animal.class が JVM にロードされるとき、JVM はメソッド、メンバーをどのように識別しますかAnimal.class に含まれる変数、構築メソッドなど?

以下に示すように、Animal.class のインスタンス化されたオブジェクト内のメンバー変数 =red;

メモリに読み込まれると、ファーcolor =null、インスタンス化時に赤に割り当てられます。

##Animal.class の毛色属性は、java.lang.class のフィールドの属性値であり、毛皮color は java.lang.class のオブジェクトでもあります。これが、リフレクション メカニズムが動的に情報を取得し、動的にオブジェクト メソッドを呼び出す理由でもあります。

Javaのリフレクションメカニズムの原理は何ですか次の図は、Java.lang.class のメソッドです

Javaのリフレクションメカニズムの原理は何ですか

Javaのリフレクションメカニズムの原理は何ですか## in Java .lang.classでは、毛色はFieldの属性値となっており、すべてのメソッド、 Animal のメンバー変数、コンストラクター、修飾子は java.lang.class の標準に従って記述されており、そうでない場合はコンパイル中にエラーが報告されます。放射メカニズムのコード

public class _14_ReflectTest07
{
     public static void main(String[] args) throws Exception{
         //1.获取类
         Class c = Class.forName("_12_CustomerService");
         //获取某个特定的方法
         //通过:方法名+形参列表
         Method m = c.getDeclaredMethod("login",String.class,String.class);
         //通过反射机制执行login方法.
         Object o = c.newInstance();
         //调用o对象的m方法,传递"admin""123"参数,方法的执行结果是retValue
         Object retValue = m.invoke(o, "admin","123");
         System.out.println(retValue); //true
     }
}
 
 
 
public class _12_CustomerService
{
     //登录
     public boolean login(String name,String pwd){
         if("admin".equals(name) && "123".equals(pwd)){
              return true;
         }
         return false;
     }
     //退出
     public void logout(){
         System.out.println("系统已安全退出!");
     }
}
ログイン後にコピー

Javaのリフレクションメカニズムの原理は何ですか

関連学習の推奨事項:

Java の基本チュートリアルJavaのリフレクションメカニズムの原理は何ですか

以上がJavaのリフレクションメカニズムの原理は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート