2013-04-21 36 views
2

我在Functional Java中查看List .map的源代码,发现它使用了一些名为Buffer的类,但是无法在任何地方找到该类,然后我查看了导入并意识到它是内部类。但进口线看起来很有趣:静态内部类的静态导入星体是做什么的?

import static fj.data.List.Buffer.*; 

它是做什么的?为什么从自己导入?

+0

它导入'fj.data.List.Buffer'内的所有'static'元素。通过这样做,你只需要调用'Something'而不是'fj.data.list.Buffer.Something'。 – 2013-04-21 15:56:31

回答

3

import static fj.data.List.Buffer.*进口的Buffer所有静态成员为范围。否则,文件中所有对Buffer静态成员的引用(除Buffer内部引用的引用外)都需要以Buffer.作为前缀。

取而代之的是:

final Buffer<B> bs = Buffer.empty();

,可以写在文件中的任何地方这样:

final Buffer<B> bs = empty();

使用通配符本来是可以避免的。他们可以改写import static fj.data.List.Buffer.empty,并为从Buffer使用的每个其他静态成员导入另一个导入,但可能会认为通配符在这里很好,因为它是从同一个文件导入的。

0

这意味着所有的静态字段和方法将被导入。并且可以在导入类中不使用类名前缀的情况下访问它们。

1

它正在导入fj.data.List.Buffer中的所有static元素。通过这样做,您只需拨打Something而不是fj.data.list.Buffer.Something即可。

更多信息: