gpt4 book ai didi

java - 继承的构造函数java : Call to super() must be first statement

转载 作者:行者123 更新时间:2023-12-01 07:03:44 25 4
gpt4 key购买 nike

尝试用 Java 做一些事情,但在执行构造函数时遇到问题。我的代码:

片段构造函数

public Piece(Chessboard chessboard, Position position, Color color, String name, char symbol) {
this.board = chessboard;
this.position = position;
this.color = color;
this.name = name;
this.symbol = symbol;
}

Bishop 构造函数(从 Piece 扩展):

    public Bishop(Chessboard board, Position position, Color color) {
char symbole;
if(color.equals(Color.BLACK))
symbole = Symbol.BLACK_BISHOP.getCode();
else
symbole = Symbol.WHITE_BISHOP.getCode();
super(board, position, color, "Bishop", symbole);
}

当我尝试这样做时,我在 super 调用上收到错误:“super() 必须是构造函数主体中的第一个语句”。

我看到的唯一修复方法是将 super() 调用中的“symbole”替换为表达式,该表达式将在 color 函数中获得正确的符号,但我无法做到这一点?

我的Symbol类只是一个带有字段code的枚举,它代表棋子的代码。所有作品的说明均类似于 COLOR_PIECE 示例:BLACK_BISHOP

感谢您的帮助

最佳答案

三元条件运算符可以解决您的问题:

public Bishop(Chessboard board, Position position, Color color) {
super(board, position, color, "Bishop", color.equals(Color.BLACK)?Symbol.BLACK_BISHOP.getCode():Symbol.WHITE_BISHOP.getCode());
}

关于java - 继承的构造函数java : Call to super() must be first statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32800391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com