Just a question of preference, some (or several) projects tend to hide the
constructor, others accept it and yet other ones offer even both ways;-D
Configuration conf = new ConfigurationBuilder().build();
int bar1 = conf.getInteger("foo.bar");
>From my earlier example for simplicity would be equally fine.
One has to add, the static factory allows optimization especially for a
default case to cache something if it won't change for the lifetime of an
app/VM.
If you call new ConfigurationBuilder() you always need to instantiate a new
object, only the underlying JDK may help you save resources if it can.
Werner
On Thu, Mar 19, 2015 at 3:06 PM, Oliver B. Fischer <[email protected]
> wrote:
> Hi,
>
> I don't see the value of the whole discussion.
>
> Why can I not simply say
>
> new ConfigurationBuilder();
>
> What is wrong about it?
>
> Viele Grüße
>
> Oliver
>
>
> Am 19.03.15 um 14:59 schrieb Werner Keil:
>
>> Why would you get a builder FROM a configuration? I'd expect a
>> configuration from a builder;-)
>> So it'll be a builder "for" a particular configuration.
>>
>> valueOf() and getInstance() have been the two most common static factories
>> and till Java 5 or even 6 they were the only ones used at all, not just by
>> JDK.
>> While Josh Bloch started "playing" with of() in a single place (EnumSet)
>> it
>> also got probably even more frequent in the .NET world.
>> Dim xyz As Nullable(Of Date)
>>
>> is the way to use Nullable in VB.net. C# has a shortcut via "?". Both are
>> vaguely comparable to the new Optional class in Java 8. Where of() is also
>> used. Mostly new types or elements of Java 8 start getting it, so you may
>> call it less "common" for the rest of the platform.
>>
>>
>> If you prefer valueOf(), that would be just as good. from() or to() only
>> apply to conversions, they just make no sense in other cases.
>>
>> The new Lambda packages of Java 8 are full with of() and even classes or
>> inner types called Of*, etc.
>>
>> Most of its builders are static inner .Builder types btw, see
>> static <T> Stream.Builder
>> <http://docs.oracle.com/javase/8/docs/api/java/util/
>> stream/Stream.Builder.html>
>> <T>builder
>> <http://docs.oracle.com/javase/8/docs/api/java/util/
>> stream/Stream.html#builder-->
>> ()
>> Returns a builder *for *a Stream.
>>
>> Aside from any particular names it should be as easy as Typesafe Config:
>>
>> Config conf = ConfigFactory.load();
>> int bar1 = conf.getInt("foo.bar");
>> Config foo = conf.getConfig("foo");
>> int bar2 = foo.getInt("bar");
>>
>> but if you prefer the term Builder, it should be equally straightforward.
>>
>> Configuration conf = ConfigurationBuilder.getInstance().build();
>> int bar1 = conf.getInteger("foo.bar");
>>
>> would require auto-boxing but compile a comparable Tamay example.
>> Assuming
>> ConfigurationBuilder needs to instanciate first.
>>
>> Typesafe's factory is a simple static class that takes various arguments.
>>
>> Oh btw, mostly used by Eclipse and OSGi, but there you see default no-op
>> factory methods called *getDefault*() almost everywhere. But then calling
>> interfaces ISomething is also nearly unknown outside .NET or Eclipse;-)
>>
>> Werner
>>
>>
>>
>>
>>
>> On Thu, Mar 19, 2015 at 2:29 PM, Romain Manni-Bucau <
>> [email protected]>
>> wrote:
>>
>> 2015-03-19 14:19 GMT+01:00 Werner Keil <[email protected]>:
>>>
>>> well let say common is subjective since it is as common to not use it.
>>>
>>> here semantically it is wrong since you dont get the builder of a
>>> configuration but you get a builder from a configuration.
>>>
>>> more root semantic would be unwrap or something like that - we can still
>>> use but istoo technical IMO.
>>>
>>>
>>> using the constructor just makes this topic closed IMO. The static method
>>> really brings nothing here.
>>>
>>>
>>> [email protected]
>>> since
>>> me;-)
>>> [email protected]>
>>> also
>>> other
>>> a
>>> (in
>>> using
>>> a
>>> to
>>> given
>>> to
>>> input,
>>> don't
>>> can
>>> the
>>> ebove
>>> we
>>> the
>>>
>>
> --
> N Oliver B. Fischer
> A Schönhauser Allee 64, 10437 Berlin, Deutschland/Germany
> P +49 30 44793251
> M +49 178 7903538
> E [email protected]
> S oliver.b.fischer
> J [email protected]
> X http://xing.to/obf
>
>