下面列出了怎么用com.google.protobuf.MessageLiteOrBuilder的API类实例代码及写法,或者点击链接到github查看源代码。
private static <M extends MessageLiteOrBuilder> List<M> filterFrom(
List<M> objs, Predicate<M> filter, int firstDiscarded) {
List<M> filtered;
if (firstDiscarded == 0) {
filtered = null;
} else {
filtered = new ArrayList<>(objs.size() - 1);
for (int i = 0; i < firstDiscarded; ++i) {
filtered.add(objs.get(i));
}
}
for (int i = firstDiscarded + 1; i < objs.size(); ++i) {
M obj = objs.get(i);
if (filter.test(obj)) {
if (filtered == null) {
filtered = new ArrayList<>(objs.size() - i);
}
filtered.add(obj);
}
}
return filtered == null ? ImmutableList.<M>of() : filtered;
}
private static <M extends MessageLiteOrBuilder> List<M> filterFrom(
List<M> objs, Predicate<M> filter, int firstDiscarded) {
List<M> filtered;
if (firstDiscarded == 0) {
filtered = null;
} else {
filtered = new ArrayList<>(objs.size() - 1);
for (int i = 0; i < firstDiscarded; ++i) {
filtered.add(objs.get(i));
}
}
for (int i = firstDiscarded + 1; i < objs.size(); ++i) {
M obj = objs.get(i);
if (filter.test(obj)) {
if (filtered == null) {
filtered = new ArrayList<>(objs.size() - i);
}
filtered.add(obj);
}
}
return filtered == null ? ImmutableList.<M>of() : filtered;
}
@Override
protected void encode(ChannelHandlerContext ctx, MessageLiteOrBuilder msg, List<Object> out)
throws Exception {
if (msg instanceof MessageLite) {
out.add(wrappedBuffer(((MessageLite) msg).toByteArray()));
return;
}
if (msg instanceof MessageLite.Builder) {
out.add(wrappedBuffer(((MessageLite.Builder) msg).build().toByteArray()));
}
}
@Override
protected void encode(
ChannelHandlerContext ctx, MessageLiteOrBuilder msg, List<Object> out) throws Exception {
if (msg instanceof MessageLite) {
out.add(wrappedBuffer(((MessageLite) msg).toByteArray()));
return;
}
if (msg instanceof MessageLite.Builder) {
out.add(wrappedBuffer(((MessageLite.Builder) msg).build().toByteArray()));
}
}
/**
* Given a message-or-builder, returns a message, invoking the builder if necessary.
*/
@SuppressWarnings("unchecked")
public static <I extends MessageLiteOrBuilder, O extends MessageLite> O built(@Nullable I msg) {
return msg instanceof MessageLite.Builder
? (O) ((MessageLite.Builder) msg).build()
: (O) msg;
}
/**
* Given a message-or-builder, return a builder, invoking toBuilder() if necessary.
*/
@SuppressWarnings("unchecked")
public static <I extends MessageLiteOrBuilder, O extends MessageLite.Builder> O builder(
@Nullable I msg) {
return msg instanceof MessageLite
? (O) ((MessageLite) msg).toBuilder()
: (O) msg;
}