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
的某个类,我可能会有不同的想法,但这里不是这样。