Это на самом деле так, что вы не пытаетесь помещать какой-либо нечетный «объект» в ваш вариант списка «ol» (поскольку List<object>
, казалось бы, разрешает) - потому что тогда ваш код сработает (потому что список действительно List<string>
и будет принимать только объекты типа String). Вот почему вы не можете перевести свою переменную в более общую спецификацию.
На Java это наоборот, у вас нет дженериков, и вместо этого все это List of object во время выполнения, и вы действительно может наполнить любой странный объект в вашем якобы строго типизированном списке. Найдите «Reified generics», чтобы увидеть более широкое обсуждение проблемы java ...