java.lang.System 的in是final的,为什么要有public static void setIn(InputStream in)方法?
来源:互联网 发布:新疆七五事件真相知乎 编辑:程序博客网 时间:2024/06/06 09:43
setIn并不是修改System.in,只是将输入重定向了。
输入重定向baidu一下就知道了。
简单的说,如果你将输入重定向到一个文件,你用System.in读到的就是文件的内容,而不是你在console里输入的内容。
setIn也许真的修改了System.in,但是setIn里是通过一个native方法来做的,很可能是用c实现的,
绕过了java语法的限制(但是至少你看不到这个修改它的java语句)
这个可能对你有帮助:java 1.0里,System.in的确不是final的
http://docs.rinet.ru/jdk1.0/api/java.lang.System.html#10726
你可以直接给它赋值来重定向。看起来这不符合java之道,
所以java 1.1将它改为final,同时加入了setIn方法让你仍然可以做同样的事。
http://jerry.c-lab.de/java/JDK-1.1/api/java.lang.System.html#in
补充:看来System.in还是被改了。
- java.lang.System 的in是final的,为什么要有public static void setIn(InputStream in)方法?
- java.lang.System 的in是final的,为什么要有public static void setIn(InputStream in)方法?
- 为什么java的main方法是public static void
- java接口的变量为什么是public static final 的
- 为什么main方法是public static void?
- 为什么main方法是public static void?
- 为什么main方法是public static void?
- 为什么main方法是public static void?
- 为什么main方法是public static void?
- 为什么main方法是public static void?
- 为什么 main 方法是 public static void?
- 为什么main方法是public static void?
- 为什么main方法是public static void?
- Java的main方法为什么是public static的?
- java的main函数为什么是public static void main(String[] args)
- java的main函数为什么是public static void main(String[] args)
- main方法为什么一定是Public static void
- java类中的main()方法必须是public static void 和有参数的
- CArray
- CArray
- CArray
- Effective Gigabit Ethernet Adapters-Intel千兆网卡8257X性能调优
- 如何中断线程in Java
- java.lang.System 的in是final的,为什么要有public static void setIn(InputStream in)方法?
- Java 解析XML的几种方法
- 何去何从的电纸书
- 何去何从的电纸书
- 何去何从的电纸书
- 其实真的可以这样来过
- [StoryToolKit]讲述自己心中的故事
- sphinx中文文档v.0.9.9
- undo表空间在没有被愤怒下的恢复