黑马程序员技术交流社区
标题:
System.setIn()方法为什么可以调用多次而不出错?
[打印本页]
作者:
jackwang
时间:
2015-3-19 19:23
标题:
System.setIn()方法为什么可以调用多次而不出错?
本帖最后由 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();
}
}
复制代码
没有任何错误,编译运行全部通过!求解释
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2