public abstract interface Color
{
public static final float[] xyz2sRGB;
static
{
float[] arrayOfFloat = new float[9];
arrayOfFloat[0] = 3.241F;
arrayOfFloat[1] = -0.9692F;
arrayOfFloat[2] = 0.0556F;
arrayOfFloat[3] = -1.5374F;
arrayOfFloat[4] = 1.876F;
arrayOfFloat[5] = -0.204F;
arrayOfFloat[6] = -0.4986F;
arrayOfFloat[7] = 0.0416F;
arrayOfFloat[8] = 1.057F;
xyz2sRGB = arrayOfFloat;
} 编译器不喜欢上面的代码,返回错误:
The interface ColorSpace cannot define an initializer我哪里错了?
发布于 2012-02-16 17:38:52
接口没有初始值设定项。静态或非静态。但是,您可以使用静态初始值设定项创建抽象类。但请记住,抽象类不是接口,所以您只能扩展一个这样的类。
public abstract class Color{
public static final float[] xyz2sRGB;
static
{
xyz2sRGB= new float[9];
xyz2sRGB[0] = 3.241F;
xyz2sRGB[1] = -0.9692F;
xyz2sRGB[2] = 0.0556F;
xyz2sRGB[3] = -1.5374F;
xyz2sRGB[4] = 1.876F;
xyz2sRGB[5] = -0.204F;
xyz2sRGB[6] = -0.4986F;
xyz2sRGB[7] = 0.0416F;
xyz2sRGB[8] = 1.057F;
}
}发布于 2012-02-16 17:40:41
abstract interface听起来很不对劲。
定义abstract class或interface。接口将不支持static初始值设定项。
在您的示例中,只需用class替换接口即可。
发布于 2012-02-16 22:04:20
您可以简单地使用数组的声明来初始化数组:
public interface Color {
public static final float[] xyz2sRGB = {
3.241F, -0.9692F, 0.0556F,
-1.5374F, 1.876F, -0.204F,
-0.4986F, 0.0416F, 1.057F
};
}然后你就不需要初始化器了,问题就解决了
https://stackoverflow.com/questions/9308723
复制相似问题