【发布时间】:2022-07-29 13:01:33
【问题描述】:
上下文
我想为我的 JavaFX 应用程序创建颜色映射,以便根据它们的值显示具有不同颜色的网格。定义了两种类型:DiscreteColorMap 使用 integer 键和 ContinuousColorMap 使用 double 键。两者都必须实现接口ColorMap,这样才能这样调用:
ColorMap palette1 = new DiscreteColorMap();
ColorMap palette2 = new ContinuousColorMap();
问题
由于两个类都依赖于相同的接口,我指定了一个模板 (public interface ColorMap<T>) 以适应它们中的每一个:
ColorMap<Integer> palette1 = new DiscreteColorMap();
ColorMap<Double> palette2 = new ContinuousColorMap();
我想要颜色图的最简单语法,所以我需要去掉 <Integer> 和 <Double> 字符串。最优雅的方法是什么?
来源
完整的代码可以在这个GitHub project找到。
【问题讨论】:
-
Number是Integer和Double的超类,使用<Number>应该适用于两者。 -
<Integer>和<Double>这里不是字符串。不清楚你在问什么。为什么要“摆脱它们”? -
类型参数是可选的,可以写成:
ColorMap cm = new DiscreteColorMap();。这使用了所谓的“原始类型”。但是您会丢失特定的类型信息,因此不建议使用原始类型。 IDE 将突出显示它们并建议再次添加类型参数。
标签: java oop templates javafx design-patterns