java.util.regex.Pattern
本身没有实现编码和解码原型函数。然而,你可以很容易地实现这一点(正如安迪·特纳建议的那样)。像这样的:
原始的
syntax = "proto2";
package termin4t0r;
option java_package = "com.example.termin4t0r";
// Proto for java.util.regex.Pattern
message RegexPatternProto {
// See Pattern.pattern()
optional string pattern = 1;
// See Pattern.flags()
optional int64 flags = 2;
}
Java编解码功能
class RegexpPatternProtos {
public static RegexPatternProto encode(java.util.regex.Pattern pattern) {
return RegexPatternProto.newBuilder()
.setPattern(pattern.pattern())
.setFlags(pattern.flags())
.build();
}
public static java.util.regex.Pattern decode(RegexPatternProto patternProto) {
return new RegexPatternProto(
patternProto.getPattern(), patternProto.getFlags());
}
}
我将UNITStestas作为一个练习:)我甚至发现这样的串行化是更好的,因为协议缓冲区具有向前和向后兼容性,而Java序列化则有问题。