Единственный способ сделать это более безопасным для типов способом, чем List<Object>
, - это определить тип объединения:
class IntegerOrList {
final Integer i;
final List<IntegerOrList> list;
// Constructors to ensure that only one of i and list is present.
IntegerOrList (Integer i) {
this.i = i; this.list = null;
}
IntegerOrList (List<IntegerOrList> list) {
this.i = null; this.list = list;
}
// Getters.
}
Это должно выдать или обработать иначе, если вы попытаетесь получить доступ к отсутствующему.
Затем создайте список из них:
List<IntegerOrList> list = new ArrayList<>();