1. リフレクションの概要
リフレクション (リフレクション) は、動的言語としてみなされるための鍵です。リフレクション メカニズムにより、プログラムは実行中にリフレクション API を通じて任意のクラスの内部情報を取得できます。任意のオブジェクト、内部プロパティおよびメソッドを直接操作できます。クラスがロードされると、ヒープ メモリのメソッド領域に Class 型オブジェクトが生成されます (クラスには Class オブジェクトが 1 つだけあります)。このオブジェクトには、クラスの完全な構造情報が含まれています。このオブジェクトを通してクラスの構造を見ることができます。このオブジェクトは鏡のようなものです。この鏡を通してクラスの構造を見ることができるので、これを反射と呼びます。
2. 一般的に使用される api
java.lang.Class
: クラス
#java.lang.reflect.Method## を表します# : クラス
java.lang.reflect.Fieldのメソッドを表します: クラス
java.lang.reflectのメンバー変数を表します。 Constructor: クラスを表すコンストラクター
static Class forName(String name) 指定されたクラス名 name の Class オブジェクトを返します
Object newInstance( ) なしパラメータ コンストラクタを呼び出し、クラス オブジェクトのインスタンスを返します。
getName() エンティティの名前を返します (クラス、インターフェイス、配列クラス、基本型、または void)。この Class オブジェクトによって表されます
Class getSuperClass() 現在の Class オブジェクトの親クラスの Class オブジェクトを返します
現在の Class オブジェクトのインターフェイスを取得します
このクラスのクラス ローダーを返します
戻り値このクラスによって表されるエンティティのスーパークラスを表すクラス
特定の Constructor オブジェクトを含む配列を返します
Field オブジェクトの配列を返します Array Method
Method オブジェクトを返します。このオブジェクトの正式パラメータ タイプは paramType です。 例:
public class Person { private String name; private int age; public Person() { System.out.println("Person类被初始化了。。。。。^_^"); } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
Reflection
public class ClassDemo { public static void main(String[] args) throws Exception { // 1. 创建Class对象 //Class<person> clazz = (Class<person>) Class.forName("Person"); Class> clazz =Class.forName("Person"); // 2. 通过Class对象调用其方法 // 2.1. 通过反射来实例化对象 //Person person = clazz.newInstance(); Object o = clazz.newInstance(); // 此名就相当于 Person p = new Person() // 2.2. 获取类的完整类名称(包名+类名) String name = clazz.getName(); System.out.println(name); // 2.3. 获取类的简单名称,就是类的名称,不含包名 System.out.println(clazz.getSimpleName()); // 2.4. 获取构造器 Constructor>[] constructors = clazz.getConstructors(); for (Constructor> constructor : constructors) { System.out.println(constructor.getName()); } // 2.5. 获取字段 Field[] fields = clazz.getFields(); for (Field field : fields) { System.out.println(field.getName()); } // 2.6. 获取方法 Method[] methods = clazz.getMethods(); for (Method method : methods) { System.out.println(method.getName()); } } }</person></person>
3. クラス オブジェクトを作成する 4 つの方法
public class Demo { public static void main(String[] args) throws Exception { // 第一种方式:调用Class.forName() Class clazz =Class.forName("java.lang.String"); // 第二种方式:通过类的字节码文件来创建 Class clazz1 = String.class; // 第三种方式:通过调用对象的getClass()方法来创建 String str = new String(); Class clazz2 = str.getClass(); // 第四种:通过类装载器来创建 ClassLoader loader =String.class.getClassLoader(); Class> clazz3 =loader.loadClass("java.lang.String"); } }
以上がJavaにおけるリフレクションの意味と役割は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

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

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
