Обобщения в Java не используются во время выполнения, поэтому в среде выполнения Java ваше поле идентификатора имеет тип Object и поэтому может быть установлено на любое значение независимо от обобщений. Тем не менее, это плохая идея, так как все, что предполагает общий договор, потерпит неудачу.
Вы можете установить поле с помощью отражения следующим образом:
BeanDo beanDo = new BeanDo();
Method method = BeanDo.getClass().getMethod("setId", Object.class);
method.invoke(beanDo, "SomeRandomString");
Тем не менее, делать это крайне плохая идея, потому что любой код, скомпилированный с BeanDo, будет считать, что id - это целое число, а не строка. Таким образом, любой код, такой как beanDo.getId()
, потерпит неудачу с исключением приведения класса, потому что на самом деле это не целое число.
Как и другие постеры, я немного не в курсе того, чего вы пытаетесь достичь.