2014-10-21 2 views
0

У меня есть следующий простой метод:Как я могу сделать эти стеки обобщенными?

public static Stack transfer(Stack s) { 
    Stack t = new Stack(); 
    return t; 
} 

я намерен заполнить больше функциональных возможностей, но я хотел бы сделать это применимо к родовым стеков:

Stack<E> 

Где E является обобщенным типом элементов в стеке. Я попробовал несколько способов добавить элемент в Stack, но я, похоже, все время получаю ошибки независимо от того, как я их настроил. Я знаю, что это основной вопрос, но я никогда не использовал стеки раньше, и мне просто нужно указать в правильном направлении.

Код на Java, используя Eclipse. Штабели находятся в java.util.Stack

+1

[Stack уже родовым] (http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html). – m0skit0

+0

Для чего используется 's'? Посмотрев, что делает функция, ее скорее следует называть 'createStack' и не принимать аргументов. – ifloop

+0

Он фактически берет входной стек и возвращает его обратно как выходной стек. Это было очень просто завершить после ответа на вопрос о генериках. – natep

ответ

3

Stack класса уже универсален, но для того, сделать transfer метод родовым, вы должны сделать:

public static <E> Stack<E> transfer(Stack<E> s) { 
    Stack<E> t = new Stack<E>(); 
    return t; 
} 
+0

Вот и все. Мне не хватало E между статикой и стеком. Благодарю. – natep

0

Вы просто должны предоставить тип, типа параметр уже универсальный класс Stack<T>

Stack<String> stringStack = new Stack<>(); 
Смежные вопросы