java - 反思 - 如何?
问题描述
我想返回一个包含 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;
}
我只能返回一个列表。我如何更改它以便它也返回参数?
解决方案
考虑返回一个 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;
}
参数列表的方法名称列表的字符串。
推荐阅读
- .net - 如何编写工具来更改 .net 代码(用于混淆目的)
- swift - 无法将“无效”类型的值分配给“字符串?”
- regex - 此 Google 表格 REGEXREPLACE 替换了错误的值
- wordpress - AWS 网站托管免费套餐不起作用?
- extract - 如何从目录中提取所有 .tgz 文件
- javascript - 如何从表单中删除特定的单词/空格
- django - Django,过滤mysql数据库
- r - 在 R Shiny 中刷新 Leaflet PolylineDecorator 中的箭头以创建交互式流程图
- apache-spark - 为什么我不能在 Spark 中使用 map 函数更改节点的属性?
- javascript - 如果条件在使用临时数据的脚本中不起作用