android之getDeclaredFields等函數介紹

函數介紹

函數名 介紹
getFields() 獲得某個類的所有的公共(public)的字段,包括父類中的字段。
getDeclaredFields() 獲得某個類的所有聲明的字段,即包括public、private和proteced,但是不包括父類的申明字段。
getDeclaredMethod 獲取當前類的所有聲明的方法,包括public、protected和private修飾的方法。需要注意的是,這些方法一定是在當前類中聲明的,從父類中繼承的不算,實現接口的方法由於有聲明所以包括在內。
getMethod 獲取當前類和父類的所有public的方法。這裏的父類,指的是繼承層次中的所有父類。比如說,A繼承B,B繼承C,那麼B和C都屬於A的父類。
getDeclaredConstructors() 獲取當前類的所有類型的構造器,包括public和非public
getConstructors() 獲取當前類的構造器,只返回public。

使用實例

Main_active.java:

package com.exmple.getdeclaredfieldstest;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @author Lee
 * @date 20/12/14
 */
public class MainActivity extends AppCompatActivity {

    String LeeOne = "China Lee One";
    String LeeTwo = "China Lee Two";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Field[] fields = MainActivity.class.getDeclaredFields();

        for (Field field: fields) {
            Log.d("MainActivity", "---test---getDeclaredFields--toString-" + field.toString());
            Log.d("MainActivity", "---test---getDeclaredFields--getName-" + field.getName());
        }

        Field[] fieldAll = MainActivity.class.getFields();
        for (Field field: fields) {
            Log.d("MainActivity", "---test---getFields--toString-" + field.toString());
            Log.d("MainActivity", "---test---getFields--getName-" + field.getName());
        }

        Method[] methods = MainActivity.class.getDeclaredMethods();
        for (Method method: methods) {
            Log.d("MainActivity", "---test---getDeclaredMethods--toString-" + method.toString());
            Log.d("MainActivity", "---test---getDeclaredMethods--getName-" + method.getName());
        }

        Log.d("MainActivity", "---test---getDeclaredMethods--sizeof-" + methods.length);
        Method[] methodAll = MainActivity.class.getMethods();
        Log.d("MainActivity", "---test---getMethods--sizeof-" + methodAll.length);
    }

    public void print() {
        return;
    }
}

執行效果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章