是否可以使用for
指令初始化接口中的数组?
答案 0 :(得分:6)
简单的问题 - 在界面中初始化数组是否可行?
是
这有效但我想通过“for”intsruction初始化数组。好的,谢谢你的帮助
这不是一个简单的问题;)
您无法严格执行此操作,因为您无法向界面添加静态块。但您可以使用嵌套的class
或enum
。
恕我直言,这可能会比以下更有用:
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项:仅使用接口来定义类型
常量接口模式是对接口的不良使用。
在界面中导出常量是个坏主意。