【发布时间】:2019-06-23 07:41:36
【问题描述】:
我有这个静态工厂方法:
public static CacheEvent getCacheEvent(Category category) {
switch (category) {
case Category1:
return new Category1Event();
default:
throw new IllegalArgumentException("category!");
}
}
Category1Event定义为;
class Category1Event implements CacheEvent<Integer> ...
上述静态工厂方法的客户端代码如下所示:
CacheEvent c1 = getCacheEvent(cat1);
编辑:
上面的代码工作正常。但是我更喜欢不使用原始类型CacheEvent,而是使用参数化类型。使用上述原始类型的一个明显缺点是,在以下情况下我将不得不强制转换:
Integer v = c1.getValue(); // ERROR: Incompatible types, Required String, Found Object.
我可以按如下方式执行未经检查的分配,但这会发出警告。如果可能的话,我会尽量避免。
// Warning: Unchecked Assignment of CacheEvent to CacheEvent<Integer>.
CacheEvent<Integer> c1 = getCacheEvent(cat1);
【问题讨论】:
-
你得到什么错误?
-
我从那个方向开始,但不确定如何使用那个 typeToken。你能举个例子吗?