У ILMTitan есть хорошее решение, и если вы не хотите, чтобы класс имел значение Value, вы можете использовать базовый тип вместо дженериков в этот момент, потому что вы отключите функцию безопасности, но там вдали. Вы даже можете передать параметр, чтобы сделать этот метод более общим, но ключ - «@SuppressWarnings».
@SuppressWarnings("unchecked")
Msg<Value<?>> convert()
{
return (Msg<Value<?>>) this;
}