【发布时间】:2012-11-15 22:31:39
【问题描述】:
当我说:
时,为什么我的编译器会发疯(需要常量表达式)final static char [] BASES = new char[]{'A', 'T', 'C', 'G'};
.
.
char c= in.charAt(i);
switch(c){
case BASES[0] : break;
case BASES[1] : packed =(char) (packed | 1); break;
.
.
.
}
但如果我说:
final static char a ='A';
final static char t ='T';
switch(c){
case a : break;
...
开心吗? 我觉得我在这里很厚。 :-/
【问题讨论】:
-
除非我弄错了,
char[]是最终的,但内容不是。 IE。你不能说BASES = new char[] { ... },但你仍然可以说BASES[0] = 'X';,所以BASES[0]不是常数。 -
如果将switch语句的常量放在数组中而不是单独的
static final char常量中,目的是什么?在示例中您没有使用数组本身。 -
我想在其他几个地方使用数组作为数组。它基本上使代码不那么脆弱。不是什么大买卖。只是觉得有点想不通……
标签: java expression constants java-7 primitive