5 The for/in Statement & Static Imports
5.1 The for/in Statement
看一下代码
import static java.lang.System.out;
public class ForInStatement {
public static void main(String[] args) {
int[] ints = new int[]{0,1,2,3,4,5,6,7,8,9};
for(int i : ints) {
out.println(i);
}
}
}
for循环表达式很简单,当然编译后得class文件中还是原先的形式for(x;x;x),java新特性好像只是为了书写方便,编译器把代码帮转成原先的Statement,jvm的内部语言实现没有多大变化,但那也足够了
这里使用了array作为例子,当然很多容器都支持这样的写法,当然你自己可以构造一个容器只要实现了interface Iterable.
5.2 Static Imports
上面的代码中的import
import static java.lang.System.out;
代码中就可以直接引用了
out.println(i);
这就是静态引入的概念,适用与静态方法,静态变量;枚举类都是staitc的,所以也可以引用
通配符的应用如:import static java.lang.Math.*;我们一般不提倡用通配符
同时引入两个一样的名字,如
import static java.util.Arrays.sort;
import static java.util.Collections.sort;
这时会根据你掉用的方法的参数,去找两个sort中合适的方法;假使你要调用的方法在两个静态引入里都同时存在,那么将会发生编译期错误
方法中参数名同静态引入名,如
import static java.lang.System.out;
.
.
public static void writeError(PrintStream err, String msg) throws IOException {
err.println(msg);
}
.
.
此时,方法中的参数err会覆盖静态引入的err;当然为了减少不必要的麻烦,建议修改writeError里err的名字为psErr之类的,不要和静态引入的重名
心情: 一般