Хотя все остальные ответы объясняют, почему вы получаете NullPointerException
, ясно, что вы хотите, так или иначе, получить String
бит вашего выражения Box<String>
.
Вы не можете ; это называется стиранием. Обобщения в выражениях и объявлениях локальных переменных являются плодом воображения компилятора; это проверенные компилятором комментарии. Нравится комментарии. они перестают существовать во время выполнения.
Обобщения в подписи (таким образом, методы, возвращающие типы, типы параметров, типы полей и любые обобщения, упомянутые где-либо в строке объявления вашего класса, поэтому A, B и C в class Foo<A> extends Parent<B> implements Something<C>
) восстанавливаются с помощью какого-то очень хитрого и странного API (и я думаю, вы действительно не хотите этого).
Если вы должны иметь возможность доступа к одному простые типы, я предлагаю передать фактический объект класса: new Box<String>(String.class)
.