该方法只能设置public/protected/private其中之一。

15

我正在实现一个接口:

public interface Consultant {
    // some documentation here explaining it should throw 3 types of exceptions
    CellLocation suggest(GameBoard gameBoard);
}

它使用另一个接口:

public interface GameBoard {
    CellState getCellState(CellLocation cellLocation);
}

我写了很多方法,但刚刚开始实现非常重要的 suggest 方法。到目前为止,它看起来是这样的:

public class YourConsultant implements Consultant {
    @Override
    public CellLocation suggest(GameBoard gameBoard) {
        char[][] arrayBoardGlobal;
        Player currentPlayerGlobal;
        GameState gameStateGlobal;
        return null;
    }
}

但我遇到了错误

在YourConsultant类型中建议的方法只能设置public / protected / private中的一个

当然,由于接口的原因,我不能将其从public更改为其他任何内容。

可能是什么原因呢? 我在这里或网络上没有找到答案,可能是因为它涉及访问修饰符的基本信息。我正在使用Eclipse Neon。


2
我强烈怀疑周围的上下文存在问题。请发布一个 [mcve]。 - Jon Skeet
1
“@Override” 注释是错误的,因为在接口中你不需要覆盖方法。我猜测你的某个类中有一个 suggest(GameBoard gb) 方法,默认情况下是受保护的,但我们确实需要看更多的代码才能回答这个问题。 - mroman
你找到了这个:https://bugs.eclipse.org/bugs/show_bug.cgi?id=130117。你使用的是哪个jdk? - Jean-François Fabre
很可能@Override注释是错误的。 我是这样得到代码的。希望这不是一个错误,因为我不知道如何解决 :)好的,我会做一个例子,但这需要一些时间。 - GregT
我正在使用JDK 1.8.0_91。 - GregT
2
@mroman,从JDK 1.6及以上版本开始,注释接口方法实现使用@Override是被支持(并且鼓励)的。但我同意问题可能出在YourConsultant周围的代码中。 - E-Riz
1个回答

31

好的,我发现了错误……在 YourConsultant 几行之前,我留下了一个孤独的“private”标签 :D。你的评论很有帮助,尤其是要求提供一个最小、完整且可验证的示例的评论。


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