我对java中的import语句有以下疑问。
package com.punith.test;
import **com.punith.test.ClassA**;
public class ClassA {
}
因此,在上面的代码中,我可以导入我定义 ClassA 的同一个类。那么为什么设计师允许这样做,而不是将编译错误纠正为警告。
问候普尼斯
这只是未使用导入的一个特例,它不会引发编译错误。未使用的导入不会影响性能,因为这是您打算在运行时使用类的编译时指标。
有无数种方法可以创建无意义的代码;让每个人都抛出一个编译时错误会使编译器变得更加复杂。最好依靠开发人员的常识元素,当常识失败(经常)时,优化掉狡猾的代码——这在这种情况下会发生。
自己导入类不会产生编译错误,但是将其作为自己的导入是没有意义的。
关于你的问题有一些想法。
首先,让我们考虑一下,为什么编译器会弃用某些代码结构?在这种情况下?显然,任何编译器错误都是关于代码不可理解部分的信号,无法正确翻译为低级指令,因此无法被JVM解释。所有其他没有意义或荒谬但可以实施的情况都不会被弃用。例如,你还可以在 Java 中做很多无意义的事情:
public void nop() {
int i;
}
或者
for (int x = 0; x < 0; x++);
或者
int i = 1;
i = i;
其次考虑的import
陈述并不完全是关于你的问题,但它很接近。还有import static
说法。这是一个非常合理的情况,即在此文件中描述的同一类的静态导入是明智的。例如,它在这种情况下很有帮助:
package xxx;
import static xxx.TestEnum.Test.*;
public class TestEnum {
enum Test {
TEST1,
TEST2
}
public boolean isTest2(Test test) {
return test == TEST2;
}
}
在这段代码中没有import static xxx.TestEnum.Test.*
我们不能使用这样的构造test == TEST2;
。如果没有这样的导入,它将是compile error
,我们必须将其更改为return test == Test.TEST2;
.