Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #35469
| Path | csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Eric Sosman <esosman@comcast-dot-net.invalid> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Why not String compare? |
| Date | Fri, 26 Aug 2016 13:24:32 -0400 |
| Organization | A noiseless patient Spider |
| Lines | 40 |
| Message-ID | <nppu0n$nle$1@dont-email.me> (permalink) |
| References | <33463070-424f-4fb0-956b-2849f1a400eb@googlegroups.com> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8; format=flowed |
| Content-Transfer-Encoding | 7bit |
| Injection-Date | Fri, 26 Aug 2016 17:24:39 -0000 (UTC) |
| Injection-Info | mx02.eternal-september.org; posting-host="22e5ab429c5a4bb738666b9c52e40d69"; logging-data="24238"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Tu0ceMFpf1Cm1L68eE+6L" |
| User-Agent | Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
| In-Reply-To | <33463070-424f-4fb0-956b-2849f1a400eb@googlegroups.com> |
| Cancel-Lock | sha1:JJ1KhMt2YCZ/xS13kyqwAegUYb8= |
| Xref | csiph.com comp.lang.java.programmer:35469 |
Show key headers only | View raw
On 8/26/2016 12:00 PM, Eric Douglas wrote:
> This seems odd, the String class returns false if you pass a null into equals(), but throws NPE if you pass null into compareTo().
> The Javadoc on it's compareTo() doesn't mention nulls much less NPE.
> The Javadoc on Comparator mentions it'll return NPE by default for a null, but any time I write a custom Comparator I return 1 for compareTo() if argument is null.
Are you talking about Comparator, or about Comparable? The
latter has a compareTo() method, the former does not.
If you're speaking of Comparable, I think you're in violation
of the spec. In
ComparableThing x = ...; // non-null
ComparableThing y = null;
int xy = x.compareTo(y);
int yx = y.compareTo(x);
... you don't get xy and yx with opposite signs, as required by
the Comparable documentation:
The implementor must ensure sgn(x.compareTo(y)) ==
-sgn(y.compareTo(x)) for all x and y. (This implies that
x.compareTo(y) must throw an exception iff y.compareTo(x)
throws an exception.)
If you're speaking of Comparator, simply returning 1 when either
argument of compare() is null is also a breach. Consider
Thing x = ...; // non-null
Thing y = null;
Comparator<Thing> c = ...;
int xy = c.compare(x, y);
int yx = c.compare(y, x);
Again, you must ensure that sgn(xy) = -sgn(yx), but if both are 1
this doesn't hold. (You should also arrange that c.compare(null,null)
returns 0, not 1 or -1.)
--
esosman@comcast-dot-net.invalid
The Tooth Fairy has gone high-tech, now pays in Bitecoin.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Why not String compare? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-26 09:00 -0700
Re: Why not String compare? Robert Klemme <shortcutter@googlemail.com> - 2016-08-26 18:49 +0200
Re: Why not String compare? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-26 10:09 -0700
Re: Why not String compare? Robert Klemme <shortcutter@googlemail.com> - 2016-08-26 22:48 +0200
Re: Why not String compare? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-26 13:55 -0700
Re: Why not String compare? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-26 17:29 -0400
Re: Why not String compare? Lew <lewbloch@gmail.com> - 2016-08-30 22:20 -0700
Re: Why not String compare? Robert Klemme <shortcutter@googlemail.com> - 2016-08-31 08:17 +0200
Re: Why not String compare? Andreas Leitgeb <avl@logic.at> - 2016-08-31 09:45 +0000
Re: Why not String compare? Robert Klemme <shortcutter@googlemail.com> - 2016-08-31 19:24 +0200
Re: Why not String compare? Andreas Leitgeb <avl@logic.at> - 2016-09-01 10:17 +0000
Re: Why not String compare? Robert Klemme <shortcutter@googlemail.com> - 2016-09-02 18:29 +0200
Re: Why not String compare? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-26 13:24 -0400
Re: Why not String compare? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-26 10:48 -0700
Re: Why not String compare? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-26 14:50 -0400
Re: Why not String compare? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-26 12:19 -0700
Re: Why not String compare? Lothar Kimmeringer <news200709@kimmeringer.de> - 2016-09-01 20:42 +0200
Re: Why not String compare? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-09-01 17:57 -0400
Re: Why not String compare? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-26 11:03 -0700
Re: Why not String compare? Lothar Kimmeringer <news200709@kimmeringer.de> - 2016-09-02 21:54 +0200
csiph-web