这个article在2.2.1中说不再有Typedef,Defines或Preprocessor。在C ++中,include
是预处理器的一部分。什么是import
?
答案 0 :(得分:13)
导入尽管名称没有“导入”任何东西,但它只是让你调用没有完全限定名称的类。
为了澄清,如果我执行import java.util.ArrayList;
,现在我可以将ArrayList
类称为ArrayList
。如果我不这样做,我仍然可以使用该课程,我只需要将其称为java.util.ArrayList
。
如果你使用*
导入整个软件包,最糟糕的事情就是会发生名称冲突,因此,你必须使用全名来引用Java类,但它没有' t在运行时使用更多内存。
java.lang
中的类会自动“导入”。
Java 1.5引入了static imports,它使程序员能够引用导入的静态成员,就像它们在使用它们的类中声明一样。它们应该谨慎使用。可接受的用法是导入JUnit Assert方法。例如,传统的导入:
import org.junit.Assert;
...
Assert.assertEquals(expected, actual);
使用静态导入:
import static org.junit.Assert.assertEquals;
...
assertEquals(expected, actual);
答案 1 :(得分:2)
导入允许您使用不合格的类名。例如,使用import java.util.ArrayList
,您可以在代码中使用非限定类型名称ArrayList
。如果没有import语句,则必须始终使用完全限定名称:java.util.ArrayList
。
还有静态导入,它将静态类元素带入编译单元的名称空间。
答案 2 :(得分:1)
import
使包名称在文件中被使用。它与C #inlclude
完全不相符。
答案 3 :(得分:1)
由于源代码命名约定严格,Java编译器只需从包的完全限定名称和类中轻松找到相应的源文件或类文件。完全限定名称是指指定完整的包和类,例如
java.util.ArrayList x = new java.util.ArrayList ();
这种冗长编码风格的替代方法是使用import语句。
import java.io.*;
import java.util.ArrayList;
ArrayList x = new java.util.ArrayList();
这对理解别人的代码也很有帮助
答案 4 :(得分:0)
告诉编译器你正在使用另一个包中的某个类的方法吗?