一般的なJavaのリフレクションAPIの概要

任意のオブジェクトについて、そのメソッドとプロパティを呼び出すことが可能である;情報及び動的メソッド呼び出しオブジェクトへのこの動的アクセスJavaリフレクション機構は、任意のクラスのために、このクラスのすべてのプロパティとメソッドに知らされており、動作状態にあります機能は、反射Java言語と呼ばれています。
Javaリフレクション(放射)機構:「プログラムが実行される、プログラム構造は、そのような言語は、動的言語と呼ばれる、変更または変数の型を可能にします」。この観点から、PerlやPython、Rubyは動的言語で、C ++、Javaは、C#が動的言語ではありません。しかし、JAVAは非常に著名なダイナミックなメカニズムがあります。リフレクションを、Javaが体内で使用されているが、我々は、コンパイルクラス中に完全に不明使用して、ロード時間、ディスカバリーで実行できることを意味します。クラス名はそれを実行する場合にのみ、つまり、Javaプログラムをロードすることができ、その完全な設定を知らされ(ただし、方法が定義されている)、およびそのオブジェクトの実体を生成し、またはそのフィールドに値を設定するか、その方法を喚起。

まず、クラスオブジェクトを取得します

1、通过对象获取,obj.getClass();
2、通过类路径名获取,Class.forName("com.metadata.Student");
3、通过类名获取,Object.class;

第二に、共通APIの類似点と相違点

getField、getMethod和getCostructor方法可以获得指定名字的域、方法和构造器。
getFields、getMethods和getCostructors方法可以获得类提供的public域、方法和构造器数组,其中包括超类的共有成员。
getDeclatedFields、getDeclatedMethods和getDeclaredConstructors方法可以获得类中声明的全部域、方法和构造器,其中包括私有和受保护的成员,但不包括超类的成员。

第三に、操作変数、メソッド、コンストラクタ

1、变量
    get
    set
2、方法
    invoke(Object obj, Object... args)
3、构造方法
    Class.newInstance() 只能够调用无参的构造函数,即默认的构造函数; 
    Constructor.newInstance() 可以根据传入的参数,调用任意构造构造函数。

修飾子を無視
(真)setAccessible。

----------------
免責事項:この記事は元の記事CSDNブロガー「Ezioooooo」であり、BY-SAの著作権契約、複製、元のソースのリンクと、この文を添付してくださいCC 4.0に従ってください。 。
オリジナルリンク:https://blog.csdn.net/u012877472/article/details/51084965

おすすめ

転載: www.cnblogs.com/shaoyu/p/11571747.html