开发者

Permanently hidden warning from Scalac parsing Java code - compiler bug?

The scalac Java parser is taking objection to my Java code

imported `Entity' is permanently hidden by definition of object Entity in package domain    Asset.java

This seems to be a collision between an import and a class with the same name in the package being compiled.

In my package I have a class

package iMP2020.domain;

public interface Entity {
    public Serializable getId();
}

with the same name as an imported class from a different package

package iMP2020.domain;
import javax.persistence.Entity; // compiler warning

@Entity
public class Asset {

where it is complaining about the import. Javac is quite happy. Note that I don't have to reference my version of the class- just its existence is enough to trigger the warning on the 开发者_如何转开发import.

I can fix this by removing the import and explicitly referencing @Entity, but is it a bug in the compiler?


I don't seem to be able to reproduce this except with the Scala Eclipse plugin, so I'm going to wait for that to stabilise before coming to a conclusion.


You have two Entity references, one for your interface, and another one for javax.persistence.Entity.

Try to replace the second one with the full qualified name, removing the import:

package iMP2020.domain;

public interface Entity {
    public Serializable getId();
}

and

package iMP2020.domain;

@javax.persistence.Entity
public class Asset {


I don't think it is a bug. It doesn't make sense for an import to have the same name as a package member.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜