0

我对java中的import语句有以下疑问。

    package com.punith.test;
    import **com.punith.test.ClassA**;

    public class ClassA {

    }

因此,在上面的代码中,我可以导入我定义 ClassA 的同一个类。那么为什么设计师允许这样做,而不是将编译错误纠正为警告。

问候普尼斯

4

3 回答 3

1

这只是未使用导入的一个特例,它不会引发编译错误。未使用的导入不会影响性能,因为这是您打算在运行时使用类的编译时指标。

有无数种方法可以创建无意义的代码;让每个人都抛出一个编译时错误会使编译器变得更加复杂。最好依靠开发人员的常识元素,当常识失败(经常)时,优化掉狡猾的代码——这在这种情况下会发生。

于 2013-07-19T11:28:24.597 回答
0

自己导入类不会产生编译错误,但是将其作为自己的导入是没有意义的。

于 2013-07-19T11:24:11.560 回答
0

关于你的问题有一些想法。

首先,让我们考虑一下,为什么编译器会弃用某些代码结构?在这种情况下?显然,任何编译器错误都是关于代码不可理解部分的信号,无法正确翻译为低级指令,因此无法被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;.

于 2013-07-19T11:27:33.453 回答