Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java System.in和System.out的类型_Java - Fatal编程技术网

Java System.in和System.out的类型

Java System.in和System.out的类型,java,Java,表示它具有类型InputStream: public static final InputStream in public static final PrintStream out 但是,InputStream是一个抽象类 默认情况下,中的的实际类型是什么?是混凝土的吗 InputStream的子类 我们能否更改中的所指对象的类型?我想没有,因为最终版 同样地 表示它具有类型PrintStream: public static final InputStream in public sta

表示它具有类型
InputStream

public static final InputStream in
public static final PrintStream out
但是,
InputStream
是一个抽象类

默认情况下,中的
的实际类型是什么?是混凝土的吗
InputStream
的子类

我们能否更改
中的
所指对象的类型?我想没有,因为
最终版

  • 同样地 表示它具有类型
    PrintStream

    public static final InputStream in
    
    public static final PrintStream out
    
    为什么
    out
    声明有一个具体的类类型,而
    in
    不是吗

  • 它是以下因素的组合:

  • 历史原因
  • 具体类型的灵活性(例如,根据实现和/或运行时环境),只提供所需的方法(即“程序到接口,而不是具体类”)
  • 历史原因:类XxxxStream以字节为单位工作,而XxxxWriter以字符为单位工作,对吗?不完全是。也有例外。System.out是一个PrintStream,它可以在chars上工作!为什么它不是一个印刷作家。历史原因

    编程到一个接口。System.out声明为PrintStream,但这并不一定意味着其运行时具体类型实际上是PrintStream。它可以很容易地成为PrintStream的一个子类。为什么System.out不声明为抽象类型?这仅仅是因为它决定提供PrintStream中可用的方法,而PrintStream不需要任何其他具体的东西


    由于InputStream是抽象的,我们知道System.in肯定是一个子类。为什么不声明它是一个具体的类呢?因为这会使它变得不灵活。可能在某些情况下(例如STDIN重定向),它可能是一个FileInputStream,而在其他情况下,它可能是另一种类型的InputStream。很可能是一个定义为私有的具体类。

    有一个具体的子类。我不认为它是一个公共的具体子类。@Oliver为什么它是重复的?你注意到链接的问题只讨论了
    out
    和一个不同的问题吗?这两篇文章你都读吗?如果不是,你在这里所做的是非常不恰当的,造成了很大的损害,你能纠正你关闭我的帖子的错误吗?你的问题是许多现有问题的交叉点-我刚才又添加了一个重复的问题。@Tim,1。您可以通过
    System.in.getClass()
    检查运行时类(它为我提供了
    类java.io.BufferedInputStream
    ),这正是为什么惯例是每个问题有一个问题。。。(你似乎已经知道你的一个子问题的答案,因为这是在你先前关于C#的回答中提供的。)