我在努力提高我对IO的理解。因此,据我所知,'in‘是系统类的成员变量。
我认为它是一个引用变量,因为它的类型是“InputStream”,正如http://docs.oracle.com/javase/7/docs/api/java/lang/System.html中提到的那样
但是,'InputStream‘是一个抽象类,因此不能实例化它。
我做了一些测试,并得出结论,虽然不能实例化抽象类,但是可以创建抽象类类型的引用变量。因此,我的第一个问题是否有目的,如果没有,为什么允许这样做?
Example:
abstract class Someclass {
;
}
Someclass variable; // A field member of some another class. What purpose could it serve? 接下来是我的第二批相关问题。system.in变量包含什么(或引用)?当然不是
InputStream in =新的InputStream();
因为这是一门抽象的课。这是否意味着它有一个子子类的实例?如果是,是哪一个?有没有一种方法可以在线查看领域中流行的变量和方法的“身体”?
谢谢你的帮助。
编辑:重复建议没有解决这个问题。我唯一了解到的是,InputStream可能是用BufferedStream类实例化的。
以下问题仍然存在:
1.)有什么方法可以在线查看字段流行变量和方法的“主体”吗?为什么允许它引用抽象类,它的目的是什么?
3.)还有一个新的问题--为什么是InputStream in = new BufferedStream()而不是BufferedStream in = new BufferedStream()?
发布于 2015-10-24 04:29:10
对于这个问题
3.)以及作为一系列建议出现的新问题--为什么InputStream in =()而不是BufferedStream in =()?
阅读有关依赖注入的文章。
为
2.)为什么允许它引用抽象类,它的目的是什么?
根据我的知识,我所能说的就是:根据定义,我们不能为抽象类创建一个新的实例,但是我们可以使用一个现有的实例。因为它仍然可以拥有数据成员和数据变量。由于这些数据成员可能不是静态,因此我们需要一个名称引用来访问它。
你的第一个问题不清楚。但是如果想要查看.class文件中的源代码,请阅读有关反编译的内容。Java也随它而来。
发布于 2015-10-24 03:47:33
System.in是一个InputStream,它通常连接到控制台程序的键盘输入。System.in不常使用,因为数据通常通过命令行参数或配置文件传递给命令行Java应用程序。在具有GUI的应用程序中,对应用程序的输入是通过GUI提供的。这是一个独立于Java的输入机制。System本身是java.lang包中的公共最终类,它包含几种输入、输出和错误输出方法。
https://stackoverflow.com/questions/33314330
复制相似问题