GeneratedMessage.Builder - это статический вложенный класс внутри GeneratedMessage (оба они являются абстрактными классами). Когда метод build()
вызывается для объекта типа GeneratedMessage.Builder, он возвращает объект типа GeneratedMessage. Есть ли какой-нибудь способ объявить мои необработанные типы T
и B
в следующем примере, что сделало бы приведение типов в выражении возврата convert()
ненужным.
public class JsonStringToMessageConverter<T extends GeneratedMessage, B extends GeneratedMessage.Builder<B>>
implements IConverter<String, T> {
private final IPbBuilderProvider<B> m_builderProvider;
@Inject
public JsonStringToMessageConverter(IPbBuilderProvider<B> builderProvider) {
m_builderProvider = builderProvider;
}
@Override
public final T convert(String value) {
B builder = m_builderProvider.getPbBuilder();
try {
JsonFormat.merge(value, builder);
} catch (ParseException e) {
throw new LoggedRuntimeException(ErrorType.PARSE_FAILED, e);
}
return (T) builder.build();
}
}
Класс GeneratedMessage
определен в библиотеке Google Protobuf. * 1011 *