[ 
https://issues.apache.org/jira/browse/AVRO-1261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13588693#comment-13588693
 ] 

Doug Cutting commented on AVRO-1261:
------------------------------------

The no-arg constructor is also used to create instances when reading.  Setting 
field defaults in this case may harm performance, especially when new copies of 
mutable default values are allocated each time.  Similarly, setting field 
values to defaults when writing may harm performance when the application 
overwrites the default.  In general, there are cases where it's probably 
fastest to create instances without defaults set.  Currently the no-arg 
constructor serves this purpose and the Builder API supports the case where 
defaults are desired.

Perhaps we could better document this?  The generated no-arg constructor might 
include javadoc cautioning that no default values are set and that the builder 
should be used if they're desired?
                
> Honor schema defaults with the Constructor in addition to the builders.
> -----------------------------------------------------------------------
>
>                 Key: AVRO-1261
>                 URL: https://issues.apache.org/jira/browse/AVRO-1261
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.7.4
>            Reporter: Christopher Conner
>            Priority: Minor
>
> As I understand it, currently if you want to utilize defaults in a schema, ie:
> { 
> "namespace": "com.chris.test", 
> "type": "record", 
> "name": "CHRISTEST", 
> "doc": "Chris Test", 
> "fields": [ 
> {"name": "firstname", "type": "string", "default": "Chris"}, 
> {"name": "lastname", "type": "string", "default": "Conner"}, 
> {"name": "username", "type": "string", "default": "cconner"}
> ] 
> }
> Then I have to use the builders to create my objects.  IE:
> public class ChrisAvroTest {
> public static void main(String[] args) throws Exception {
> CHRISTEST person = CHRISTEST.newBuilder() 
> .build(); 
> System.out.println("person:" + person);
> } 
> }
> Is my understanding correct?  Is it possible to make it so the default 
> constructor as well?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to