Как вернуть универсальные методы? - PullRequest
0 голосов
/ 03 мая 2019

Я сейчас делаю домашнее задание и наткнулся на, возможно, довольно легкую «проблему».

Мне нужно собрать стек, и мне нужно выполнить следующий метод:

public E top()
    {   
        if(!isEmpty()) {
            /*
             * return top element
             * which would be st[pos-1]
             */
        }
        return null;
    }

Я использую

//to save elements
private Object[] st;

//for position in array
private int pos = 0;

Я попытался вернуть свой массив, но он говорит мне: «Невозможно преобразовать объект в E». Теперь я не знаю, как продолжить.

// edit: мой конструктор

public Stack(int size)
    {
        st = new Object[size];
        //st = new E[size]; doesn't work

    }

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

Вам нужно разыграть:

E element = (E) st[pos-1];

Вы получите предупреждение без проверки. Это безопасно подавлять при условии, что в массив добавлены только экземпляры E.

void add(E element) {
  st[pos++] = element;
}

(И это в значительной степени то, что делает java.util.ArrayList, кстати)

0 голосов
/ 03 мая 2019

Ваш массив должен быть типа E

private E[] st;
...