This question already has answers here:
Why is java.io.FileDescriptor's constructor public?

(2个答案)


5年前关闭。




我正在研究Java的API,想知道是否存在使用类的构造函数创建FileDescriptor对象的用例-换句话说:

FileDescriptor newFileDescriptor = new FileDescriptor();


API指定构造的对象无效。谢谢。

最佳答案

不,我还没有遇到这样的用例。

FileDescriptor documentation非常清楚,尽管您可以直接构建FileDescriptor,但您不应:


文件描述符类的实例用作以下对象的不透明句柄:
表示打开文件的基础机器特定结构,
一个开放的套接字,或另一个字节的源或宿。主要实用
文件描述符的用途是创建FileInputStream或
FileOutputStream包含它。应用程序不应创建其
自己的文件描述符。


注意最后一句话:应用程序不应创建自己的文件描述符。

FileDescriptor() documentation进一步说明(如您所知):


构造一个(无效的)FileDescriptor对象。


因此,newFileDescriptor.valid()将返回false

话虽如此,如果直接构造一个FileDescriptor,那么从一般意义上讲它肯定是有效的Java对象。例如,以下代码...

FileDescriptor newFileDescriptor = new FileDescriptor();
System.out.println(newFileDescriptor.getClass());


...输出...


类java.io.FileDescriptor


...正如人们所期望的;但这当然不是特别有用–对于一个对象,希望将其用作文件描述符。

最重要的是,除开头发外,最好遵循文档的建议。

09-08 02:54