Что не так не так с кодом java в идее?
Что не так с кодом? Как я понимаю, компилятор с идеи на пару видит только объявление переменной и блок кода, но не соединяет их.
private static ArrayList<BufferedImage> SliceField (BufferedImage imgA) {
List<BufferedImage> cards = new ArrayList<>();
for (int i = 0; i < 5; i++) {
BufferedImage card = imgA.getSubimage(xStartField + (cardWidth + spacePlease) * i + i,
yStartField, cardWidth, cardHeight);
cards.add(card);
}
return cards;
}
Ответы (1 шт):
Измените тип возвращающего значения метода с ArrayList на List. Ну или в вашем методе вместо того что-бы присваивать ссылке интерфейсного типа List объект класа ArrayList(вы можете делать это потому что клас ArrayList реализует интерфейс List), просто замените тип ссылки в методе на ArrayList.
Пример замены типа возвращаемого значения метода:
private static List<BufferedImage> SliceField (BufferedImage imgA) { // в качестве возвращаемого значения теперь ожидается List<BufferedImage>
List<BufferedImage> cards = new ArrayList<>();
for (int i = 0; i < 5; i++) {
BufferedImage card = imgA.getSubimage(xStartField + (cardWidth + spacePlease) * i + i,
yStartField, cardWidth, cardHeight);
cards.add(card);
}
return cards;
}
Пример замены типа ссылки с List на ArrayList
private static ArrayList<BufferedImage> SliceField (BufferedImage imgA) {
ArrayList<BufferedImage> cards = new ArrayList<>(); // тут меняем с List<BufferedImage> на ArrayList<BufferedImage>
for (int i = 0; i < 5; i++) {
BufferedImage card = imgA.getSubimage(xStartField + (cardWidth + spacePlease) * i + i,
yStartField, cardWidth, cardHeight);
cards.add(card);
}
return cards;
}
Для большего понимания происходящего почитайте про наследование и полиморфизм, а так вообще в часности про OOP. Могу порекомендовать книгу K. Syerra "Изучаем Java", очень даже хорошо и на пальцах объясняется основные принципы OOP и вообще учит програмировать в целом.