Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 为什么Files.newByteChannel不返回FileChannel?_Java_Nio - Fatal编程技术网

Java 为什么Files.newByteChannel不返回FileChannel?

Java 为什么Files.newByteChannel不返回FileChannel?,java,nio,Java,Nio,java.nio.file.Files.newbytechnel返回seekablebytechnel。但返回的对象的实际类是sun.nio.ch.FileChannelImpl(在我的Java中),所以我可以将其转换为Java.nio.channels.FileChannel,并将其用作FileChannel。有人知道为什么文件.newByteChannel无法返回FileChannel 有人知道Files.newByteChannel无法返回FileChannel的原因吗 (抽象类)实现接口

java.nio.file.Files.newbytechnel
返回
seekablebytechnel
。但返回的对象的实际类是
sun.nio.ch.FileChannelImpl
(在我的Java中),所以我可以将其转换为
Java.nio.channels.FileChannel
,并将其用作FileChannel。有人知道为什么
文件.newByteChannel
无法返回
FileChannel

有人知道Files.newByteChannel无法返回FileChannel的原因吗

(抽象类)实现接口

通常,使用接口的
对象引用
而不是类始终是一种很好的做法,因为如果我们更改了实现,那么就不需要到处更改代码

有人知道Files.newByteChannel无法返回FileChannel的原因吗

(抽象类)实现接口


通常,使用接口的
对象引用而不是类始终是一种好的做法,因为如果我们更改了实现,那么我们就不需要到处更改代码。

你要求一个ByteChannel,它会给你一个ByteChannel,在我看来很好。sun.*不是API的一部分,明确使用它会将您的应用程序绑定到特定的VM(以及该VM的一组特定版本)。@ignis我不确定这是否是问题的根源,但由于该方法是在
文件中实现的,因此返回
文件通道
是有意义的。如果
Files
扩展了最初定义
newByteChannel
的某个类,我可能会有不同的想法,但这里的情况并非如此。你要求一个ByteChannel,它会给你一个ByteChannel,我觉得很好。sun.*不是API的一部分,明确使用它会将您的应用程序绑定到特定的VM(以及该VM的一组特定版本)。@ignis我不确定这是否是问题的根源,但由于该方法是在
文件中实现的,因此返回
文件通道
是有意义的。如果
Files
扩展了最初定义
newbytechnel
的某个类,我可能会有不同的想法,但这里不是这样。