【发布时间】:2011-12-13 11:06:47
【问题描述】:
GeneratedMessage.Builder 是 GeneratedMessage 中的一个静态嵌套类(它们都是抽象类)。当对 GeneratedMessage.Builder 类型的对象调用方法 build() 时,它会返回 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 库中定义。
【问题讨论】: