我想通过给定的枚举调用动态 getter。我想在静态 map 中定义它。但我不确定我的对象将如何使用该方法。
我有 Color 枚举和对象库。
public enum Color {
Red,
Blue,
Black,
Green,
Pink,
Purple,
White;
}
public class Library{
public List<String> getRed();
public List<String> getBlue();
public List<String> getBlack();
.....
}
我想要一个 Map ,所以当我通过 Type 获得一个新的 Library 对象时,我将调用正确的 get。 例如:
private static Map<Color, Function<......>, Consumer<....>> colorConsumerMap = new HashMap<>();
static {
colorConsumerMap.put(Color.Red, Library::getRed);
colorConsumerMap.put(Color.Blue, Library::getBlue);
}
Library lib = new Library();
List<String> redList = colorConsumerMap.get(Color.Red).apply(lib)
但这种方式无法编译。 有什么建议吗?
最佳答案
它看起来像你的 Map
应声明为:
private static Map<Color, Function<Library,List<String>> colorConsumerMap = new HashMap<>()
因为你的 getter 返回 List<String>
.
关于Java如何在 map 中存储 setter/getter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51284359/