我一直在做一个用Java编写国际象棋的项目。我有一个名为Piece
的抽象类,它有一个抽象方法和两个普通方法。每个棋子我都有一个类,它们都扩展了棋子
。
有一个类也代表棋盘,叫做Board
。在这个类中,我有一个方法来检查给定位置的棋子是否属于另一个玩家。在这个方法中,我调用了一个来自Piece
类的方法,该方法获取名为getColor()
的颜色。当我在一个棋子上调用这个方法时,它说“方法getColor()对于类型Piece是未定义的”,即使它是在Piece
类中创建的方法。我真的不知道该怎么解决这个问题。
下面是Piece
类代码:
abstract class Piece {
private Color color;
/**
* @param color the color of the piece.
*/
public Piece(Color color) {
this.color = color;
}
/**
* This method gives a list of all legal moves a piece at a given position in a
* given board can do.
*
* @param position the position of the piece in the board.
* @param board the board in which the piece is in.
* @return a list of all legal moves.
*/
abstract List<Position> getPossibleMoves(Position position, Board board);
/**
* @return the color of the piece.
*/
public Color getColor() {
return color;
}
下面是板
课程代码:
public class Board {
private Square[][] square;
/**
* Initialises an 8 by 8 squares 2d table.
*/
public Board() {
this.square = new Square[8][8];
for (int row = 0; row < square.length; row++) {
for (int column = 0; column < square.length; column++) {
square[row][column] = new Square<>(null);
}
}
}
/**
* This method sets the given piece in the given position in the board.
* Throw an exception if the position is not in the board.
*
* @param piece The piece to be set.
* @param position The position to set the piece in.
*/
public <Piece> void setPiece(Piece piece, Position position) {
if (piece instanceof Piece) {
if (contains(position)) {
square[position.getRow()][position.getColumn()].setPiece(piece);
} else {
throw new IllegalArgumentException("The given position isn't part of the board :" + position);
}
}
}
/**
* This method returns the piece that is in the given position in the board.
* Throws an exception if the position is not in the board.
*
* @param pos The position of the piece in the board.
* @return the piece.
*/
public <Piece> Piece getPiece(Position pos) {
Piece piece;
if (contains(pos)) {
piece = (Piece) square[pos.getRow()][pos.getColumn()].getPiece();
} else {
throw new IllegalArgumentException("The given position isn't part of the board :" + pos);
}
return piece;
}
/**
* This method determines whether or not the piece at the given position has the
* same or the opposite color as the given color.
* throws an exception if position is not in the board.
*
* @param pos the position of the piece to be checked.
* @param col the color to check if the piece is in the opposite color or not.
* @return true if the piece is in the opposite color, false otherwise.
*/
public <Piece> boolean containsOppositeColor(Position pos, Color col) {
boolean containsOpposite = false;
if (contains(pos)) {
if (!isFree(pos)) {
Piece piece = getPiece(pos);
containsOpposite = (col.opposite() == piece.getColor());
}
} else {
throw new IllegalArgumentException("The given position isn't part of the board :" + pos);
}
return containsOpposite;
}
问题出在这样一行:containsPosite=(col.containst()==piece)。getColor())
问题是您定义了一个泛型类型
比如说
public <Piece> Piece getPiece(Position pos)
应该是
public Piece getPiece(Position pos)
其他方法也是如此:
public <Piece> void setPiece(Piece piece, Position position)
应该是
public void setPiece(Piece piece, Position position)
和
public <Piece> boolean containsOppositeColor(Position pos, Color col)
应该是
public boolean containsOppositeColor(Position pos, Color col)
代码如下,这是一段示例代码 那段for循环是想过滤有效数据。 问题是这段代码ts报错,代码逻辑没问题,问题的根本出在MenuItem的类型定义上,本意是想定义一个二级级联数据MenuItem,之所以使用T extends string而不是直接写为string,是因为在某些交互函数的参数中,希望将代表command的参数定义一个固定的可选数据CommandType。 当有子级数据的时候,关心的是子
在下,出现一条红线,表示:TouchActions TapObjectsSue类型的方法tap(TapOptions)未定义
颜色选取器 在 1.受保护的无效上创建(捆绑保存实例状态) { 超级.on创建(已保存实例状态); 错误:创建(捆绑包)上的方法未定义对象 类型2.new MyView(指画活动.this); 错误:构造函数指画活动.MyView(指画活动)未定义 3.set内容查看(mv); 错误:他的方法集内容视图(指画活动.MyView)是未定义的类型指画活动 4.公共布尔值在创建选项菜单(菜单菜单) {
正如代码所示,我想知道的是,在内存分配中,隐藏Base而不调用子的额外方法的实际情况是什么,它被调用了什么,有没有一种通过Base调用方法的方法。请帮忙
错误在最后一行,我想知道到底出了什么问题,以及如何修复它,谢谢!
问题内容: 取自Android的想法:从对话框中模糊和暗化背景窗口。我无法使对话框下的内容模糊。当调用eula.getWindow()时,我收到此错误: 对于类型AlertDialog.Builder,未定义方法getWindow() 随同主要活动中的以下代码一起显示出eula: 任何帮助是极大的赞赏。 问题答案: 是对话框类的方法,而不是对话框生成器的方法。您的代码应该看起来像这样: 请注意,尽