为什么java字符集需要额外的导入?

为什么java字符集需要额外的导入?,java,io,Java,Io,根据本教程,我正在自学Java中的文件和I/O: 现在,在写了一些例子来理解输入和输出之后,我得到了一个关于导入某些库的问题 我创建了以下示例程序,我问自己为什么程序会说: 找不到符号-类字符集 我知道解决方案是导入以下内容 导入java.nio.charset.* 但是,如果我已经获得了父库,为什么还要导入它呢?您导入的是包,而不是库。一个库可能包含多个包,但这并不意味着您可以单独导入它们 此外,Charset类属于java.nio.Charset包,而您已经导入了java.nio.文件包。两

根据本教程,我正在自学Java中的文件和I/O:

现在,在写了一些例子来理解输入和输出之后,我得到了一个关于导入某些库的问题

我创建了以下示例程序,我问自己为什么程序会说:

找不到符号-类字符集

我知道解决方案是导入以下内容 导入java.nio.charset.*


但是,如果我已经获得了父库,为什么还要导入它呢?

您导入的是包,而不是库。一个库可能包含多个包,但这并不意味着您可以单独导入它们

此外,Charset类属于java.nio.Charset包,而您已经导入了java.nio.文件包。两者之间没有关系——一方不是另一方的父母

但是,如果我已经得到了父库,为什么还要导入它呢

不,您不是,将包想象为文件夹和定义路径的子文件夹

当你导入这个

java.nio.file.*

您正在访问该“路径”中的所有类

但是字符集在java.nio.Charset文件夹中…这实际上是另一个完全不同的路径

您的意思是从父包导入所有内容,如

java.nio.*


一个有帮助的例子是,当你考虑它时,对象包是所有包中的王者,但是如果你导入它,你就不能得到它下面的所有东西。那么就没有必要再进口东西了,更不用说这会带来什么问题了。您不能只导入一个包,然后期望在它下面创建的所有东西都与它一起提供。出于存储原因,仍然需要子包

什么是“父库”?请注意,当您导入
java.nio
(您没有导入)时,您只导入该包,没有导入任何子包
java.nio.charset
是与
java.nio
不同的包。就这样。
import java.nio.*;

public class test
{

public static void main(String[] args)
{
    Charset charset = Charset.forName("US-ASCII");
}

}