Две вещи:
List<Integer> myl = new ArrayList<Integer>();
можно упростить до:
List<Integer> items = new ArrayList<>();
Алмазный оператор позволяет избежать повторения информации о типе. Я также изменил его, чтобы использовать значащие имена. Не используйте сокращения, которые не имеют никакого смысла. Используйте то, что легко понимают ваши читатели.
И тогда вам просто нужен состав:
items = (List<Integer>) myStack.pop();
Конечно, это требует, чтобы у вас действительно был список сверху вашего стека!
В идеале, ваш стек сам может поддерживать дженерики, чтобы вы могли сказать что-то вроде:
MyStack<List<Integer>> myStack = new MyStack<>();
чтобы потом можно было просто пойти
items = myStack.pop();
без приведения!
Видите ли, когда в сигнатуре вашего метода указано this method returns Object
, тогда как компилятор должен знать, что в этом случае, поскольку ранее вы добавили список, значение имеет более конкретный тип?!