Can we deprecate Path.endsWith(String)?
Anthony Vanelverdinghe
anthonyv.be at outlook.com
Wed Jan 14 10:01:31 UTC 2026
On 1/14/2026 8:15 AM, Alan Bateman wrote:
> On 13/01/2026 20:13, Anthony Vanelverdinghe wrote:
>> There are 3 questions:
>>
>> (1) should we deprecate `Path::startsWith(String)`?
>> (2) should we deprecate `Path::endsWith(String)`?
>> (3) should we add a file extension API?
>>
> The "plan" is to deprecate startsWith(String) and endsWith(String),
> and to reboot the effort to add the file extension API.
>
> -Alan
Just for the record, emptying my bag of arguments:
Google's Error Prone has a whole catalog of bug patterns, including
confusing Java SE APIs. Shall we deprecate all of those as well then?
And note that it does *not* have a bug pattern for
`Path::{starts,ends}With`. So nobody at Google ever bothered to add it.
And nobody outside Google ever bothered to file an issue to add it.
(Same for SonarQube, SpotBugs, or FindBugs: no pattern for this.)
Virtually every Java developer has made the mistake of using
`Thread.sleep(5)` to mean "sleep 5 seconds" (which is the behavior in
pretty much every shell). So why are we not deprecating that method then?
Even `String::endsWith(String)` itself is confusing, since some people
assume its argument is a regex (as with some other String methods like
`matches`) [1]. So why not e.g., replace `String::matches(String)` with
`String::matches(Pattern)`?
[1]
https://stackoverflow.com/questions/9943609/checking-if-string-ends-with-something-with-java-regex
Anthony
More information about the core-libs-dev
mailing list