検索
ホームページJava&#&チュートリアルJavaにおけるリフレクションの意味と役割は何ですか?

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 [] getInterfaces()

現在の Class オブジェクトのインターフェイスを取得します

ClassLoader getClassLoader()

このクラスのクラス ローダーを返します

Class getSuperclass()

戻り値このクラスによって表されるエンティティのスーパークラスを表すクラス

Constructor[] getConstructors()

特定の Constructor オブジェクトを含む配列を返します

Field[ ] getDeclaredFields()

Field オブジェクトの配列を返します Array Method

getMethod(String name,Class … paramTypes)

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 サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

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

DVWA

DVWA

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