是否可以在接口中初始化数组?

时间:2012-08-14 08:03:43

标签: java arrays collections interface initialization

是否可以使用for指令初始化接口中的数组?

5 个答案:

答案 0 :(得分:6)

  

简单的问题 - 在界面中初始化数组是否可行?

  

这有效但我想通过“for”intsruction初始化数组。好的,谢谢你的帮助

这不是一个简单的问题;)

您无法严格执行此操作,因为您无法向界面添加静态块。但您可以使用嵌套的classenum

恕我直言,这可能会比以下更有用:

public interface I {
    int[] values = Init.getValue();

    enum Init {;
        static int[] getValue() {
            int[] arr = new int[5];
            for(int i=0;i<arr.length;i++)
                arr[i] = i * i;
            return arr;
        }
    }
}

答案 1 :(得分:4)

你为什么不尝试一下?

public interface Example {
    int[] values = { 2, 3, 5, 7, 11 };
}

答案 2 :(得分:2)

是的,但前提是它是静态的。实际上,在接口中声明的任何变量都将自动为静态。

public interface ITest {
    public static String[] test = {"1", "2"}; // this is ok
    public String[] test2 = {"1", "2"}; // also ok, but will be silently converted to static by the compiler
}

你不能拥有静态初始化器。

public interface ITest {
    public static String[] test;
    static {
        // this is not OK. No static initializers allowed in interfaces.
    }
}

显然,你不能在接口中拥有构造函数。

答案 3 :(得分:2)

是的,这是可能的。见代码:

public interface Test {
  int[] a= {1,2,3};
}

public class Main {
  public static void main(String[] args) {

    int i1 = Test.a[0];
    System.out.println(i1);
  }
}

答案 4 :(得分:1)

首先,我同意现有的答案。

此外,我不认为在界面中定义数据是个好主意。 请参阅“有效Java”:

  

第19项:仅使用接口来定义类型

     

常量接口模式是对接口的不良使用。

在界面中导出常量是个坏主意。