Java之反射機制三:獲取類的方法


一.實體類BigDog.java

package reflex;
public class BigDog extends Dog {
private Integer age;

public String name;

public BigDog(){}

private void getDog(){}

private BigDog(Integer age, String name) {
this.age = age;
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

@Override
public String toString() {
return "BigDog{" +
"age=" + age +
'}';
}
}

二.獲取類的方法

1.獲取類及其父類的公有方法

Class<BigDog> dogClass = BigDog.class;
Method[] methods = dogClass.getMethods();
for (Method method : methods) {
       System.out.println(method);
}

運行結果:

 

 

 2.獲取該類的所有方法

Method[] declaredMethods = dogClass.getDeclaredMethods();
 for (Method declaredMethod : declaredMethods) {
        System.out.println(declaredMethod);
 }

運行結果:

 

 

 三.獲取類的構造方法

        Class<BigDog> dogClass = BigDog.class;
        //獲取該類的公有構造方法
        Constructor<?>[] constructors = dogClass.getConstructors();
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }
        //獲取該類所有的構造方法(包括有參無參,私有共有)
        Constructor<?>[] declaredConstructors = dogClass.getDeclaredConstructors();
        for (Constructor<?> declaredConstructor : declaredConstructors) {
            System.out.println(declaredConstructor);
        }
//獲取該類公有的有參構造方法
Constructor<BigDog> constructor = dogClass.getConstructor(Integer.class);
System.out.println(constructor);
//獲取該類私有的有參構造方法
Constructor<BigDog> declaredConstructor = dogClass.getDeclaredConstructor(Integer.class, String.class);
System.out.println(declaredConstructor);

運行結果:

 

 四.獲取該類指定的方法

1.獲取類指定的公有方法

//獲取ArrayList的add方法
Class<ArrayList> clazz = ArrayList.class;
Method method = clazz.getMethod("add", int.class, Object.class);
System.out.println(method);

運行結果:

2.獲取類指定的私有方法

//獲取類的指定私有方法
Class<Object> clazz = Object.class;
Method method = clazz.getDeclaredMethod("registerNatives");
System.out.println(method);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM