如何在KafkaStreams中初始化KeyValueStore而不进行转换



在第27行代码中:github

我们可以找到CCD_ 1一书的作者是如何初始化KeyValueStore的。他使用脏转换(KeyValueStore)

public class PurchaseRewardTransformer implements ValueTransformer<Purchase, RewardAccumulator> {
private KeyValueStore<String, Integer> stateStore;
private final String storeName;
private ProcessorContext context;
public PurchaseRewardTransformer(String storeName) {
Objects.requireNonNull(storeName,"Store Name can't be null");
this.storeName = storeName;
}
@Override
@SuppressWarnings("unchecked")
public void init(ProcessorContext context) {
this.context = context;
stateStore = (KeyValueStore) this.context.getStateStore(storeName);
}
// ...

如何用更礼貌的方式来做?

ProcessorContext.getStateStore不返回定义类型的存储,它返回一个接口,因此如果需要使用该实现的特定方法,则必须强制转换