read()
方法在InputStream
类中声明为abstract。但我们可以使用System.in.read()
从键盘读取。
我的问题是'在'是InputStream
类的参考。因此,使用read()
方法必须引用InputStream
的某些子类。
到了什么课程' in
'默认是指?我们可以编写代码来找到这个问题的答案吗?
答案 0 :(得分:3)
回答您的具体问题:是的,您可以通过编写代码来查找System.in
类。
这是您正在寻找的应用程序:
public class SystemDotInClassFinder {
public static void main(String[] args) {
System.out.println(System.in.getClass().getName());
}
}
运行此脚本会产生:
java.io.BufferedInputStream
答案 1 :(得分:1)
正如您在源代码中看到的那样,它是一个BufferedInputStream:
private static void initializeSystemClass() {
props = new Properties();
initProperties(props);
VM.saveAndRemoveProperties(props);
lineSeparator = props.getProperty("line.separator");
Version.init();
FileInputStream arg = new FileInputStream(FileDescriptor.in);
FileOutputStream arg0 = new FileOutputStream(FileDescriptor.out);
FileOutputStream arg1 = new FileOutputStream(FileDescriptor.err);
setIn0(new BufferedInputStream(arg));
setOut0(newPrintStream(arg0, props.getProperty("sun.stdout.encoding")));
setErr0(newPrintStream(arg1, props.getProperty("sun.stderr.encoding")));
loadLibrary("zip");
Terminator.setup();
VM.initializeOSEnvironment();
Thread arg2 = Thread.currentThread();
arg2.getThreadGroup().add(arg2);
setJavaLangAccess();
VM.booted();
}