It would be nice to introduce a Preconditions class (although I am not
opposed to continue maturing Objects). I was waiting for the right time for
this to be mentioned again (as it was mentioned in the past). Checking
indices aren't the only thing we could add; another thing would be a method
that throws ISE on failing a check. Lots of code in the wild does that
patten: if (!condition) throw new IllegalStateException();


Cheers,
Paul

On Tue, Sep 29, 2015 at 2:24 PM, Peter Levart <peter.lev...@gmail.com>
wrote:

>
>
> On 09/29/2015 06:05 PM, Paul Sandoz wrote:
>
>> On 29 Sep 2015, at 12:57, Stephen Colebourne <scolebou...@joda.org>
>>> wrote:
>>>
>>> Just to note that an ideal location for this would be on a new class,
>>> one that has been discussed before, an "argument checker class".
>>>
>>> See Guava Preconditions:
>>>
>>> https://github.com/google/guava/blob/master/guava/src/com/google/common/base/Preconditions.java
>>>
>>> See Commons Lang Validate:
>>>
>>> https://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/Validate.html
>>>
>>> See OpenGamma ArgChecker:
>>>
>>> http://opengamma.github.io/StrataDocs/apidocs/com/opengamma/strata/collect/ArgChecker.html
>>>
>>> https://github.com/OpenGamma/Strata/blob/master/modules/collect/src/main/java/com/opengamma/strata/collect/ArgChecker.java
>>>
>>> This was discussed when Objects.requiresNotNull was discussed IIRC.
>>>
>> FTR here is the discussion:
>>
>>
>> http://openjdk.5641.n7.nabble.com/template/NamlServlet.jtp?macro=search_page&node=2&query=6797535&sort=date
>> <
>> http://openjdk.5641.n7.nabble.com/template/NamlServlet.jtp?macro=search_page&node=2&query=6797535&sort=date
>> >
>>
>> AFAICT there was no objection in principle to such classes. I sense that
>> the objection to going that route was due to an increase in scope and as
>> such it would overrun it's budget.
>>
>>
>> I
>>> still think it would be a great addition to the JDK (as every project
>>> has something similar). This issue could be the start, although it
>>> would need a few more methods, guided by the examples above.
>>>
>>> Just a few *more* bike sheds to paint :-) I am concerned i will never
>> finish this nor other un/related tasks.
>>
>> For now I am ok with Objects being that "argument checker class” simply
>> because it already has a gravitational pull due to the mass of the existing
>> check methods [*].
>>
>> Paul.
>>
>> [*] I believe it is a backwards compatible to change Objects to extends
>> from Preconditions and move the existing static check methods to
>> Preconditions. That seems like a sleazy trick though.
>>
>
> Yes, but the same could be achieved by just re-implementing those 3
> methods in Preconditions or delegating from Preconditions to Objects -
> without strange subtyping.
>
> I think it's worth introducing Preconditions class. checkNotNull overloads
> are equally well suited for Objects as they are for Preconditions, so it's
> not wrong to have them in both, while checkIndex and friends don't really
> suit any of the existing classes. If I would have to search for them in
> among existing classes, Arrays would be the place to look first. List
> interface the 2nd. IndexOutOfBoundsException wouldn't come to my mind, as
> Exception(s) are usually not homes for logic, neither would Integer which
> is to abstract to mentally associate it with array or list index checks.
>
> Regards, Peter
>
>
>

Reply via email to