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
我哪里错了?
答案 0 :(得分:1)
界面没有初始化程序。静态与否。但是,您可以使用静态初始化程序创建抽象类。但请记住,抽象类不是一个接口,所以你只能扩展一个这样的类。
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;
}
}
答案 1 :(得分:0)
abstract interface
听起来非常错误。
定义abstract class
或interface
。和接口不支持static
初始值设定项。
在您的示例中,只需将类替换为类。
答案 2 :(得分:0)
您只需使用声明初始化数组:
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
};
}
然后您不需要初始化程序并解决问题