Вы пытаетесь выполнить приведение, которое никогда не будет возможно, и компилятор не позволит вам сделать это.
Например,
String s = "hello";
Integer i = (Integer) s;
не допускается, потому что String
и Integer
не находятся в одной иерархии классов, поэтому такое приведение никогда не будет возможным. Компилятор позволит вам сделать это:
String s = "hello";
Object o = s;
Integer i = (Integer) o;
но это выдаст ClassCastException
во время выполнения.
В вашем случае вам, вероятно, нужно каким-то образом извлечь Figure
из Node
, чтобы определить, есть ли черная пешка в этом узле, как в
if (getFigureForNode(node) instanceof BlackPawn) {
...
по методу
Figure getFigureForNode(Node n)
при условии BlackPawn extends
(или implements
) Figure
.
Кодовый запах
Обратите внимание, что использование instanceof
обычно не является хорошим дизайном. Вы, вероятно, хотите использовать метод isBlackPawn(Figure f)
вместо строк return f.getFigureType() == FigureType.PAWN && f.getPlayerColor() == PlayerColor.WHITE
.