2015-09-23 3 views
-1

Мне нужен контейнер, чтобы отслеживать кучу объектов (public class Note), и Stack кажется идеальным для того, что мне нужно. Контейнер называется listOfNotes. Но когда я пытаюсь нажать ноту на стек с:Стеки и объекты (общедоступные классы)

listofNotes.push(Note0), 

компилятор дает мне эту ошибку:

warning: [unchecked] unchecked call to push(E) as a member of the raw type Stack.

Означает ли это, стеки не может содержать объекты, или я с помощью команды «толчок» не так?

+0

Пожалуйста отправьте образец кода, иллюстрирующий проблему. – CollinD

+0

Вы должны определить тип, например. Список означает, что вы определяете тип этого списка в строке. Возможно, вы захотите перечислить или то, что вызвал ваш класс. – StackFlowed

+0

@sstan Удалить это! – StackFlowed

ответ

0

Вы должны определить тип, например.

List<String> 

означает, что вы определяете тип этого списка в строке. Вы, возможно, захотите

List<Node> 

или что-то из того, что вы называете.

0

Его трудно сказать, без образца кода, но что-то вроде этого должно работать:

Stack stack = new Stack(); 
Note note = new Note(); 
stack.push(note); 

Можете ли вы дать образец кода более полной?

0

Это только предупреждение (не ошибка), и все в порядке. Вы можете посоветовать компилятору игнорировать такое предупреждение, например, используя аннотацию @SuppressWarnings («rawtypes») в вашем коде. Сделайте это, если это IS ОК для вас. В этом случае вам, возможно, придется бросить, когда выскакивают из стека, как и что:

Note note = (Note) listOfNotes.pop(); 

Но для лучшего стиля и практичности, вы должны рассмотреть, чтобы дать контейнер (Stack) предполагаемый тип (см «Generics»):

package yourpackage; 
import java.util.Stack; 

public class Note { 
    public static void main(String[] a) { 
     Stack<Note> listOfNotes = new Stack<>(); 
     listOfNotes.push(new Note()); 
    } 
} 

Таким образом, код для извлечения объектов из стека такова:

Note note = listOfNotes.pop(); 
Смежные вопросы