ошибка: не удается найти символ при объявлении нового объекта LunchBag в моем классе TestLunchBag в методе main. Также есть отдельный класс Lunch (только с полем int и конструкторами / геттерами / сеттерами).
LunchBag<Lunch> lunchBox = new LunchBag<>();
Приведенное выше объявление дает мне сообщение об ошибке «error: not find symbol» со ссылкой на LunchBag, несмотря на то, что LunchBag определяется как класс, реализующий интерфейс GeneralBag. Вот конкретная ошибка:
error: cannot find symbol
LunchBag<Lunch> lunchBox = new LunchBag<>();
symbol: class LunchBag
location: class TestLunchBag
Приведенный выше блок повторяется дважды для одной и той же строки, сообщая о наличии двух ошибок.
Я определил класс Lunch, в котором просто есть поле int для кода, представляющего элемент ланча (1 для яблока, 2 для сэндвича и т. Д.). В моем классе определение LunchBag
package arraybags;
import java.util.Arrays;
public class LunchBag<T> implements GeneralBagInterface<T> {
private T[] bag;
private static final int DEFAULT_CAPACITY = 10;
private int numberOfEntries;
/**
* Creates an empty bag whose initial capacity is 10.
*/
public LunchBag() {
this(DEFAULT_CAPACITY);
}
/**
* Creates an empty bag having a given initial capacity.
*
* @param capacity the integer capacity desired
*/
public LunchBag(int capacity) {
numberOfEntries = 0;
bag = (T[]) new Object[capacity];
}}
Основной метод моего класса TestLunchBag и строка, где отображается ошибка, как написано выше:
LunchBag<Lunch> lunchBox = new LunchBag<>();
Код класса TestLunchBag:
package arraybags;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class TestLunchBag{
public static void main(String[] args)
{
LunchBag<Lunch> lunchBox = new LunchBag<>();
Scanner in = new Scanner(System.in);
choice = in.nextInt();
System.out.println("Enter lunch item (ID):");
int userLunchItemEntry = in.nextInt();
Lunch lunch = new Lunch(userLunchItemEntry);
if (lunch.isValidValue == true)
{
lunchBox.add(lunch);
}
}}
Мудрый каталог файлов: у меня есть пакет с именем arraybags, который имеет:
GeneralBagInterface.java
Lunch.java
LunchBag.java
TestLunchBag.java
оператор импорта и определения моего интерфейса:
package arraybags;
public interface GeneralBagInterface <T>{
//general bag operation methods that I override in my LunchBag class
}
Просто, если нужно, определение класса обеда dec и пакеты:
package arraybags;
public class Lunch {
private int lunchItem;
public boolean isValid = false;
//and relevant methods
}
Я заявляю, что что-то не так, или мой конструктор по умолчанию не был верным / правильно написанным? Если это так, как бы я правильно объявил новый объект LunchBag, который принимает объекты Lunch в поле массива bag?