1. 程式人生 > 實用技巧 >Java 反射類的 構造方法,方法,屬性與訪問修飾符方法

Java 反射類的 構造方法,方法,屬性與訪問修飾符方法

1、構造方法(constructor):

  1.1、getConstructors() 獲取該類所有的且公共的構造方法

  1.2、getDeclaredConstructors獲取該類所有的構造

  1.3、getConstructor()根據引數列表獲取構造方法

2、方法(filter):

  2.1、getMethod(方法名,引數列表型別的class類)根據方法名與引數列表獲取該類的方法且方法是公共的

  2.2、getMethods()獲取該類所有的且公共的方法且包括所繼承的父類的方法

  2.3、getDeclaredMethods()獲取該類的所有方法不包括父類的方法

  2.4、getDeclaredMethod()根據方法名與引數列表獲取該類的方法

3、屬性(field):

  3.1、getFields()獲取所有公共的屬性

  3.2、getDeclaredFields()獲取該類所有的屬性

  3.3、getFiled(屬性名)根據屬性名獲取該類的屬性且該屬性是共公共的

  3.4、getDecalredFiled(屬性名)根據屬性名獲取該類的屬性

原始碼:

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

public class Test { public static void main(String[] args) { //method Class clz=null; try { clz= Class.forName("com.sw.zy.zy1.Student"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { System.out.println(
"clz.getMethod:\t"+clz.getMethod("test",String.class)); System.out.println("=========================================="); System.out.println("clz.getMethods():"); Method[] methods= clz.getMethods(); for (int i=0;i<methods.length;i++) { System.out.println("第"+(i+1)+"個方法:\t" +methods[i]); } System.out.println("=========================================="); System.out.println("clz.getDeclaredMethods():"); Method[] methods2=clz.getDeclaredMethods(); for (int i=0;i<methods2.length;i++) { System.out.println("第"+(i+1)+"個方法:\t" +methods2[i]); } System.out.println("=========================================="); System.out.println("clz.getDeclaredMethod():"); System.out.println(clz.getDeclaredMethod("test",String.class)); System.out.println("=========================================="); } catch (NoSuchMethodException e) { e.printStackTrace(); } //field try { System.out.println("clz.getField(\"sex\"): "+clz.getField("sex")); System.out.println("=========================================="); Field[] fields=clz.getFields(); for (int i=0;i<fields.length;i++){ System.out.println("第"+(i+1)+"個屬性: "+fields[i]); } System.out.println("=========================================="); System.out.println("clz.getDeclaredFields():"); Field[] fields2= clz.getDeclaredFields(); for (int i=0;i<fields2.length;i++){ System.out.println("第"+(i+1)+"個屬性: "+fields2[i]); } System.out.println("=========================================="); System.out.println("clz.getDeclaredField(\"name\"): "+clz.getDeclaredField("name")); System.out.println("=========================================="); } catch (NoSuchFieldException e) { e.printStackTrace(); } //constructor try { System.out.println("clz.getConstructor(): "+clz.getConstructor()); System.out.println("=========================================="); System.out.println("clz.getConstructors():"); Constructor[] constructors=clz.getConstructors(); for (int i=0;i<constructors.length;i++){ System.out.println("第"+(i+1)+"個構造方法: "+constructors[i]); } System.out.println("==================================="); System.out.println(" clz.getDeclaredConstructors():"); Constructor[] constructors2 = clz.getDeclaredConstructors(); for (int i=0;i<constructors2.length;i++){ System.out.println("第"+(i+1)+"個構造方法: "+constructors2[i]); } System.out.println("==================================="); } catch (NoSuchMethodException e) { e.printStackTrace(); } //modifilers int modifiers=clz.getModifiers(); System.out.println("clz.getModifiers():"+modifiers); } }

心得:努力不一定有結果不努力一定沒有結果