这种新的编程范式对我来说是非常新的。我想用@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (_ options: UNNotificationPresentationOptions) -> Void) {
// Use this to avoid notification to appear on screen
completionHandler([])
// Use this to dispaly notification
completionHandler([UNNotificationPresentationOptions.alert, .sound, .badge])
}
中的匿名函数替换给定类中定义的.map()
。但我不确定如何创建新功能。
我有以下管道:
DistributedFunction
基于一些Jet示例,我最终得到了以下内容:
p.drawFrom(KafkaSources.kafka(properties, topic, "topicX", "topicY"))
.map(e -> {
Gson gson = new Gson();
KafkaMessage kafkaMessage = gson.fromJson(e.getValue().toString(),
KafkaMessage.class);
byte[] encodedData = Base64.getDecoder().decode(kafkaMessage.getData());
try {
kafkaMessage.setData(new String(encodedData, "utf-8"));
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return kafkaMessage;
})
.map(m -> m.getData())
.drainTo(Sinks.logger());
KafkaHelper课程:
p.drawFrom(KafkaSources.kafka(properties, topic, "topicX", "topicY"))
.map(KafkaHelper::decodeKafkaMessage)
.map(m -> m.getData())
.drainTo(Sinks.logger());
此方法是否遵循规范/要求将public final class KafkaHelper implements Serializable {
private static final long serialVersionUID = -3556269069192202060L;
public static KafkaMessage decodeKafkaMessage(Map.Entry<Object,Object> entry) {
Gson gson = new Gson();
KafkaMessage kafkaMessage = gson.fromJson(entry.getValue().toString(), KafkaMessage.class);
byte[] encodedData = Base64.getDecoder().decode(kafkaMessage.getData());
try {
kafkaMessage.setData(new String(encodedData, "utf-8"));
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
return kafkaMessage;
}
}
传递给DistributedFunction
?如果是,为什么?如果没有,我应该做些什么改变?
答案 0 :(得分:1)
是的,在您的示例中,您创建并将DistributedFunction
的实例传递给map()
。 Java 8有一个规则,通过该规则,第一个示例中的lambda函数和第二个示例中的方法引用用于创建实现其单一抽象方法的合成子类型DistributedFunction
(&#34; SAM&#34; )使用您提供的代码。
您的KafkaHelper
不必Serializable
,因为您从未实例化它。你也可以将静态方法decodeKafkaMessage
放在任何其他类中,因为它不依赖于类实例。