函數介紹
函數名 | 介紹 |
---|---|
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;
}
}
執行效果: