如果我们对类使用静态导入,编译器在编译实际类时是否会为静态导入的类生成一个类文件?
例如:
import static com.x.y.util.B.getIds();
public class A {
...
}
当编译器编译类A
时,它是否也会生成B
的类文件?
答案 0 :(得分:0)
不,import语句不会导致编译器生成任何内容。想想看:如果没有源代码,编译器如何生成类?编译器按定义将源代码转换为可执行代码(或者在java的情况下为字节代码)。
BTW示例中静态导入的语法不正确。您不应在静态导入中使用()
:
import static com.x.y.util.B.getIds;
答案 1 :(得分:0)
当您在类中使用关键字导入或仅使用全名来使用某种类型时。您必须确保在编译期间,编译器在构建路径中具有这两个类。
静态导入允许您访问导入类的静态成员。而已。
class Bar {
public static int getID() {
return -1;
}
}
静态导入
import static Bar.getID;
class Foo {
private void foo() {
int id = getID(); //instead of Bar.getID();
}
}