lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael McCandless (Commented) (JIRA)" <>
Subject [jira] [Commented] (LUCENE-3777) trapping overloaded ctors/setters in Field/NumericField/DocValuesField
Date Tue, 14 Feb 2012 11:24:59 GMT


Michael McCandless commented on LUCENE-3777:

I agree this is trappy!  Especially because these are sugar APIs... which should especially
not be trappy.

bq. I don't know what was the intention to change this in trunk,

This was my fault: I did this under LUCENE-3453... each of our Field impls (well, Field, NF,
DVF) had their own setters to change their value... I consolidated all of these under Field's
APIs, which I agree are trappy.

I think we should just break with 3.x here and change Field.setValue(T x) -> Field.setTValue(T

I prefer sugar classes (new IntField(7), new IntValueField(7)) instead of static factory methods
(NumericField.newIntField(7), DocValuesField.newIntField(7))...

I'll take a crack at this.
> trapping overloaded ctors/setters in Field/NumericField/DocValuesField
> ----------------------------------------------------------------------
>                 Key: LUCENE-3777
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Bug
>    Affects Versions: 4.0
>            Reporter: Robert Muir
>            Priority: Blocker
> In trunk, these apis let you easily create a field, but my concern is this:
> {code}
> public NumericField(String name, int value)
> public NumericField(String name, long value)
> ..
> public Field(String name, int value, FieldType type)
> public Field(String name, long value, FieldType type)
> ..
> public void setValue(int value)
> public void setValue(long value)
> ..
> public DocValuesField(String name, int value, DocValues.Type docValueType)
> public DocValuesField(String name, long value, DocValues.Type docValueType)
> {code}
> I really don't like overloaded ctors/setters where the compiler can type-promote you,
> I think it makes the apis hard to use.
> Instead for the setters I think we sohuld have setIntValue, setLongValue, ...
> For the ctors, I see two other options:
> # factories like DocValuesField.newIntField()
> # subclasses like IntField
> I don't have any patch for this, but I think we should discuss and fix before these apis
are released.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message