Java如何在 map 中存储 setter/getter

标签 java static supplier

我想通过给定的枚举调用动态 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/

相关文章:

Java 'reduceLeft' 签名/下界类型参数

Java如何拆分arralyist并设置为单独的字符串或数组

更改数据后,Java JTable repaint() 方法不起作用

c++ - 使用访问器访问静态 std::set 是明智的还是我应该直接访问它?

Java - 为外部库中的类定义公共(public)接口(interface)

java - 从 testNG.xml 文件中检索参数值

c++ - 全局变量不起作用

c++ - 读取多个文件,并为每个文件保留一组数据。

Java 8 供应商行为 : final variable might not be initialized