反思-怎么做?

时间:2018-09-21 11:56:13

标签: java android reflection

我想返回一个包含Android资源的所有公共方法的列表,作为方法名+ argumets,例如,相机的open(int cameraId),release(),setDisplayOrientation(int degree)等。 所以我创建了这个方法

public List<String> getPublicMethods(String api) throws ClassNotFoundException {

    Class clazz = Class.forName("android.hardware.Camera");
    Method[] publicMethods= clazz.getDeclaredMethods();


    List<String> list=new ArrayList<>();

    for (Method met : publicMethods) 
        list.add(met.getName()); 
    return list;
}

我只能返回一个列表。我如何更改它,使其也返回参数?

1 个答案:

答案 0 :(得分:0)

考虑返回HashMap。这将使您可以灵活地返回两个对象。方法名称将用作键,然后参数将用作列表。像

Map<String, List<Object>> values = new HashMap<>();


public Map<String, List<Object>> getPublicMethods(String api) throws ClassNotFoundException {

    Map<String, List<Object>> values = new HashMap<>();

    Class clazz = Class.forName("android.hardware.Camera");
    Method[] publicMethods= clazz.getDeclaredMethods();

    List<Object> listArgument = //Get Arguments Here

    for (Method met : publicMethods) 
        values.put(met.getName(), listArgument); 
    return values;
}

方法名称的字符串 参数列表。