我的項目靜態方法包含此包:com.X.Y.Z.controller
調用使用反射
此套餐包括3個文件
ControllerA.java
public class ControllerA {
public static void insert(Context context, ModelA model) {/*do somethings*/}
}
ControllerB.java
public class ControllerB {
public static void insert(Context context, ModelB model) {/*do somethings*/}
}
MainController。 java
我使用以下代碼從控制器A調用insert方法或B這取決於一些條件
public static void insert(Context context, Object object) {
Class<?> clazz = Class.forName(mClass); //Controller A or B
Method method = clazz.getMethod("insert", ?);
method.invoke(null, ?);
}
如何傳遞參數?對象可以是MODELA或ModelB
invoke(Object obj,Object ... args)需要作爲參數,調用底層方法的對象,以及用於方法調用的參數 – sreejit
您需要調用'clazz.getMethod(「insert」,Context .class,CCC)'其中'CCC'可以是'ModelA.class'或'ModelB.class'。但是我沒有看到你有什麼方法獲得'Model'類。將它作爲參數傳遞給'insert',還是會有其他方法來獲取它,或者你想要在類中搜索名爲'insert'的方法,並通過查看方法來找出'Model'類參數? – ajb
如果ModelA和ModelB實現相同的接口,例如Model,則可以傳遞Context.class和Model.class作爲getMethod的第二個和第三個參數。 –