为什么java.net.SocketInputStream不存在?

Jin*_* He 2 java sockets java-io

我正在学习Java IO和Socket,并对socket.getInputStream()实际返回的内容感到困惑...

InputStream is = socket.getInputStream();
System.out.println(is.getClass().getName());
Run Code Online (Sandbox Code Playgroud)

由于InputStream是一个抽象类,因此socket.getInputStream()必须返回InputStream的实例化子类.我使用上面的代码获取实际的类名,但is.getClass().getName()原来是

java.net.SocketInputStream
Run Code Online (Sandbox Code Playgroud)

我试图在Eclipse中导入这个类,但没有发现这个类......

那究竟发生了什么?我是否误解了Java的某些部分?

use*_*ica 5

该类是包私有的.您无法直接从java.net包装外部引用它.

  • @JingHe当然,它是源代码zip.它通过`FileDescriptor`构造函数有趣地扩展了`FileInputStream`,它有一些东西可以关闭套接字和流.否则没有任何兴趣,继续前进. (2认同)