Comment #3 on issue 460 by Add isDefault() to Java Message interface as a fast means to verify whether it is a default instance

Re 1, 2, 4: When the default instance is used is an implementation detail. The fact that it's used extensively in protobuf's implementation doesn't mean it should also be used in users' code. The "message == message.getDefaultInstnaceForType()" pattern is discouraged and may lead to buggy code. For example, when hasFoo() is false, getFoo() may return an empty Foo object but not necessarily the default instance. Rather than "isDefault()", I think what you actually want is "isEmpty()" and "getSerializedSize() == 0" serves this purpose well enough. Re 3, 5, 6: Introducing an new method to the interface doesn't improve the performance. It simply makes it easier to write the "message == message.getDefaultInstanceForType()" stuff, which I regard as an anti-pattern of using protobufs. Re 7: This is a project used widely at Google. Every addition to the interface has a great cost.
Overall, I don't think we should add "isDefault()" to the interface.

You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:

You received this message because you are subscribed to the Google Groups "Protocol 
Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
To post to this group, send email to
Visit this group at
For more options, visit

Reply via email to