我在Functional Java中查看List .map的源代码,发现它使用了一些名为Buffer
的类,但是无法在任何地方找到该类,然后我查看了导入并意识到它是内部类。但进口线看起来很有趣:静态内部类的静态导入星体是做什么的?
import static fj.data.List.Buffer.*;
它是做什么的?为什么从自己导入?
我在Functional Java中查看List .map的源代码,发现它使用了一些名为Buffer
的类,但是无法在任何地方找到该类,然后我查看了导入并意识到它是内部类。但进口线看起来很有趣:静态内部类的静态导入星体是做什么的?
import static fj.data.List.Buffer.*;
它是做什么的?为什么从自己导入?
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
使用的每个其他静态成员导入另一个导入,但可能会认为通配符在这里很好,因为它是从同一个文件导入的。
这意味着所有的静态字段和方法将被导入。并且可以在导入类中不使用类名前缀的情况下访问它们。
它正在导入fj.data.List.Buffer
中的所有static
元素。通过这样做,您只需拨打Something
而不是fj.data.list.Buffer.Something
即可。
更多信息:
它导入'fj.data.List.Buffer'内的所有'static'元素。通过这样做,你只需要调用'Something'而不是'fj.data.list.Buffer.Something'。 – 2013-04-21 15:56:31