java - Java中的参数化方法参考
问题描述
我正在尝试使用映射将字符串过滤到正确的方法。我发现构建地图的最有效方法如下。
Map<Predicate<String>, Function<String, Symbol>> temp = new HashMap<Predicate<String>, Function<String, Symbol>>();
temp.put(SymbolA::boolMethod, SymbolA::stringToSymbol);
temp.put(SymbolB::boolMethod, SymbolB::stringToSymbol);
temp.put(SymbolC::boolMethod, SymbolC::stringToSymbol);
这允许我循环遍历映射条目,直到找到 boolMethod(string) 为 true 的条目,此时我可以调用 stringToSymbol(string)。
所有这些方法都是静态的,所有符号类型都继承自 Symbol 类。
我的问题是我是否可以创建一个方法,这样我就不会为每种符号类型重复同一行。理想情况下,它会像
Map<Predicate<String>, Function<String, Symbol>> addToMap(Map<Predicate<String>, Function<String, Symbol>> map, Class<? extends Symbol> symbolType) {
map.put(symbolType::boolMethod, symbolType::stringToSymbol);
return map;
}
然而,Class 对象只有 getDefinedMethod,这似乎不适用于我的目的。
有没有办法创建这个函数,初始化这个映射,或者甚至可能有更好的方法将这些字符串过滤为正确的符号类型?
解决方案
推荐阅读
- c# - 我应该每次都创建一个新的 IServiceHubContext 实例(使用 CreateHubContextAsync)还是记住并重用?
- python - 使用 scipy.cluster.hierarchy monocrit 标准仅平整特定树
- apache-spark - Spark 基于列应用模型
- javascript - 如何使用纯 Javascript 获取动态创建的元素?
- python - QSystemTrayIcon 不显示 qasync 和 aiohttp
- navigation - 来自智能手机上的 HERE 应用程序的实时导航说明
- spring-boot - Dockerfile - 在 ENTRYPOINT 中使用 ARG 不起作用
- azure-devops - Sonar Azure DevOps 拉取请求装饰正在添加对未参与合并的文件的评论
- python - 接受用户的两个号码,去掉两个号码的共同数字,修改后打印出来
- java - Pjsip库安装java路径环境错误