首页 > 解决方案 > 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,这似乎不适用于我的目的。

有没有办法创建这个函数,初始化这个映射,或者甚至可能有更好的方法将这些字符串过滤为正确的符号类型?

标签: javaclassmethods

解决方案


推荐阅读