'error: not find symbol' при объявлении нового объекта lunchBag? - PullRequest
0 голосов
/ 15 сентября 2018

ошибка: не удается найти символ при объявлении нового объекта 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?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

В вашем LunchBag определении класса, похоже, отсутствует закрывающая "}".

0 голосов
/ 15 сентября 2018

Скомпилировано LunchBag и было ли оно импортировано в ваш класс testLunchBag (если они не входят в один пакет).

...