本帖最后由 jackwang 于 2015-3-19 19:40 编辑
System.setIn()方法为什么可以调用多次而不出错?
因为System.in 这个成员是被public static final 修饰的,所以就是个全局常变量,只可以被赋值一次。但是
为什么用System.setIn()方法赋值多次,却能够成功而不出错,例如下面代码:- import java.io.*;
- class InDemo
- {
- public static void main(String[] args) throws IOException
- {
- show();
- }
- public static void show()throws IOException //简单处理,只是演示问题,没有try异常
- {
- System.setIn(new FileInputStream("..\\TestDemo.java")); //赋值一次,亲测每次赋值都是成功的
- System.setIn(new FileInputStream("..\\Demo.java")); //赋值第二次,亲测每次赋值都是成功的
- BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
-
- BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
- String line = null;
- while((line = bufr.readLine())!=null )
- {
- if("over".equals(line))
- break;
- bufw.write(line.toUpperCase());
- bufw.newLine();
- bufw.flush();
- }
- bufw.close();
- bufr.close();
- }
- }
复制代码 没有任何错误,编译运行全部通过!求解释
|
|