我正在浏览Java 6的旧代码库,我在其中一个接口
中看到了这一点public static Function<Model, Map<? extends Class<? extends Feature>, Map<String, String>>> getRequiredFeatures = new Function<Model, Map<? extends Class<? extends Feature>, Map<String, String>>>()
{
@Override
public Map<? extends Class<? extends Feature>, Map<String, String>> apply(final Model input)
{
return input.getRequiredFeatures();
}
};
除了许多通用类型之外,我不明白的是这里正在做什么。我们只是允许在接口中声明方法签名吗?那怎么回事?我也在代码中看到了很多这个,我也不明白:
public static Function<Model, Set<Model>> unwrap = function(FuncitoGuava.<Model, Set<Model>>functionFor(callsTo(Model.class).unwrap()));
这可能是一个菜鸟问题,因为我对FP和番石榴一般都是新手。所以请轻松解决这个问题。感谢。
答案 0 :(得分:2)
第一个代码段不是方法声明。这是一个现场宣言。
该字段属于com.google.commons.base.Function<F, T>类型,它是一个接口,因此您需要实现此接口的所有方法(实际上这里是public Map<...> apply(final Model input)
)