java反射之Class.getMethod與getDeclaredMethods()區別


Class對象的getMethods和getDeclaredMethods都是獲取類對象的方法。但是又有所不同。廢話不多說, 先看demo

package com.westward;

public class Car {
    private void bell(String time){
        System.out.println("didi---"+time);
    }
    
    public void run(){
        System.out.println("running");
    }
}

測試代碼:

package com.westward;

import java.lang.reflect.Method;

public class CarTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Class<?> car=  Car.class;
        Method[] methods1=  car.getMethods();
        Method[] methods2= car.getDeclaredMethods();
        System.out.println("\n------------method.toString--------------");
        for (Method method1 : methods1) {
            System.out.println(method1);
        }
        System.out.println("\n");
        for (Method method2 : methods2) {
            System.out.println(method2);
        }
        System.out.println("\n------------method.getName--------------");
        for (Method method1 : methods1) {
            System.out.println(method1.getName());
        }
        System.out.println("\n");
        for (Method method2 : methods2) {
            System.out.println(method2.getName());
        }
    }

}

Output:


------------method.toString--------------
public void com.westward.Car.run()
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()


public void com.westward.Car.run()
private void com.westward.Car.bell(java.lang.String)

------------method.getName--------------
run
wait
wait
wait
equals
toString
hashCode
getClass
notify
notifyAll


run
bell

總結:

getMethod():獲取當前類及所有繼承的父類的public修飾的方法。僅包括public

getDeclaredMethod():獲取當前類的所有方法,包括public/private/protected/default修飾的方法。

method.getName:打印方法的名稱

method.toString:打印方法的完整簽名


免責聲明!

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



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