我试图创建这个类简化Java类Java class with 2 generic parameters而且主题建议使用此解决方案:2个泛型参数
public class Class1<T extends Class2<E extends Class3>, E extends Class3> {
...
public E someFunction(T param) {
...
}
...
}
这是工作,但在这种情况下,我应该使用2个参数没有一个:
Class1<Class21<Class31>, Class31> var = ...
在这个解决方案我重复类'氯ass31' 。有这个任务有更简单的解决方案,使用下面的代码:
Class1<Class21<Class31>> var = ...
UPDATE1:
你想解决什么问题?
例如,我有图像类。 图像可以是单通道(灰度图像)和多通道(3通道为RGB,HSB等或4通道或RGB等+ Alpha通道)。 此外,图像可以在字节0..255或float(0.0,1.0)中保存值RGB,它是不同类型的图像。 所以,我想为这个图像创建类,并构建它:
MyImage<MyChannelType3<MyColorTypeInt>> img1 = ...
MyImage<MyChannelType3<MyColorTypeFloat>> img2 = ...
MyImage<MyChannelType1<MyColorTypeFloat>> img3 = ...
,并有机会获得颜色像素为:
int Red = img1.getPixel(x, y)[0];
float Green = img2.getPixel(x, y)[0];
float Gray = img3.getPixel(x, y);
我觉得是比较有用的比:
MyImage<MyChannelType3<MyColorTypeInt>> img1 = ...
int Red = img1.getPixel(x, y).getChannel(0).getValue();
如果我将第一次返回MyChannelType3,而不是MyColorTypeInt然后值或返回对象和需求它浇铸于INT,浮子,INT []或浮子[]。
目前尚不清楚你实际询问的是什么。你想解决什么问题?如果您使用博客中建议的表单,我认为您的声明应该是'Class1 var'。 –
2012-02-12 02:39:48