首页 > 解决方案 > 反思 - 如何?

问题描述

我想返回一个包含 android 资源的所有公共方法的列表,如方法名 + 参数,例如相机的 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;
}

我只能返回一个列表。我如何更改它以便它也返回参数?

标签: javaandroidreflection

解决方案


考虑返回一个 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;
}

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


推荐阅读