ColorSpace界面无法定义初始化程序

时间:2012-02-16 09:35:53

标签: java android

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

我哪里错了?

3 个答案:

答案 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 classinterface。和接口不支持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
    };

}

然后您不需要初始化程序并解决问题