You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Anthony Whitford (JIRA)" <ji...@apache.org> on 2015/10/25 20:36:27 UTC
[jira] [Created] (POOL-306) BaseGenericObjectPool IdentityWrapper
equals violates Java spec
Anthony Whitford created POOL-306:
-------------------------------------
Summary: BaseGenericObjectPool IdentityWrapper equals violates Java spec
Key: POOL-306
URL: https://issues.apache.org/jira/browse/POOL-306
Project: Commons Pool
Issue Type: Bug
Affects Versions: 2.4.2
Reporter: Anthony Whitford
Priority: Minor
Noticed that the {{equals}} implementation assumes the {{other}} parameter can be successfully cast to {{IdentityWrapper}}:
{code}
@Override
@SuppressWarnings("rawtypes")
public boolean equals(Object other) {
return ((IdentityWrapper) other).instance == instance;
}
{code}
(There is a chance that this could throw a {{ClassCastException}}.)
See [BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS|http://findbugs.sourceforge.net/bugDescriptions.html#BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS].
I recommend:
{code}
@Override
@SuppressWarnings("rawtypes")
public boolean equals(Object other) {
return other instanceof IdentityWrapper && ((IdentityWrapper) other).instance == instance;
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)