包内的公共类无法看到公共接口?

3

我有一个类:

package Member;
public class Player implements Character{
...
}

我有一个不在包内的接口:

public interface Character{
...
}

我认为公共接口和类可以相互访问,不管它们是否在同一个包中,那么我为什么不能在Player类中实现Character呢?我遇到了错误:无法解析符号“Character”。

2
你导入了接口吗?还是接口在未命名的包中? - Mark Rotteveel
4
无法从其他包访问未命名包中的类型。请将它们放入一个具名包中(即在第二个文件中加入某个 package 声明)。 - Joachim Sauer
@JoachimSauer 唯一的解决方案是将接口放在一个命名包内? - Pawlinho
@Pawlinho:是的,未命名的包应该仅用于最简单的测试程序(如我上面给出的链接中所述)。 - Joachim Sauer
1个回答

0

如果接口(或您使用的任何其他类/枚举)位于不同的包中,则需要完全限定它:

public class Player implements org.somepackage.Character {

或者导入它:

import org.somepackage.Character;
public class Player implements Character {

这并不是错误的,但我认为 OP 的问题在于 Character 在未命名的包中。他将无法导入它。 - Joachim Sauer
1
@JoachimSauer 我认为 OP 的困惑在于他们认为“对其他包可见”意味着“甚至不需要导入”。 - Sweeper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接