網頁

2019/4/17

Java Reflection 子類別可以取得父類別的public方法

若子類別繼承父類別,使用Java 反射(Reflection)機制可以使用Class.getMethod(String name, Class<?>... parameterTypes)取得父類別的public方法。

下面分別定義了父類別Parent及子類別Child,使用反射時可透過Class.getMethod()取得父類別的public方法。

import java.lang.reflect.Method;

public class App {

    public static void main(String[] args) throws Exception {
        
        Child child = new Child();
        
        Method method = child.getClass().getMethod("getAttr1");
        String s = (String) method.invoke(child);
        System.out.print(s);
    }

}

class Parent {
    
    private String attr1 = "hello";
    
    public String getAttr1() {
        return attr1;
    }
    public void setAttr1(String attr1) {
        this.attr1 = attr1;
    }

}

class Child extends Parent {

}

印出以下結果

hello

但若父類別的方法改為protected就會報錯。


參考:

沒有留言:

張貼留言