 
                            Do not reuse the names of publicly visible identifiers, public utility classes, interfaces, or packages in the Java Standard Library.
Wiki Markup Vector}},   a   subsequent   maintainer   might   be   unaware   that   this   identifier   does   not   actually   refer   to  {{java.util.Vector}}  and   might   unintentionally   use   the   custom  {{Vector}}  rather   than   the   original  {{java.util.Vector}}  class.   The   custom   type  {{Vector}}  can  [shadow|BB. Glossary#shadow]  a   class   name   from  {{java.util.Vector}},   as   specified   by   the   JLS,  [§6§6.3.2,   "Obscured   Declarations"|http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.3.2] \[ [JLS   2005|AA. References#JLS 05]\].   This   can   result   in   unexpected   program   behavior.
Wiki Markup 
Noncompliant Code Example (Class Name)
...
| Code Block | ||
|---|---|---|
| 
 | ||
| 
class MyVector {
  //other code
}
 | 
...
When   the   developer   and   organization   control   the   original   shadowed   class,   it   may   be   preferable   to   change   the   design   strategy   of   the   original   in   accordance   with   Bloch's  _Effective   Java_ \[ [Bloch   2008|AA. References#Bloch 08]\],   Item   16,  _Prefer   interfaces   to   abstract   classes_.   Changing   the   original   class   into   an   interface   would   permit   class  {{MyVector}}  to   declare   that   it   implements   the   hypothetical  {{Vector}}  interface.   This   would   permit   client   code   that   intended   to   use  {{MyVector}}  to   remain   compatible   with   code   that   uses   the   original   implementation   of  {{Vector}}.
Risk Assessment
Public identifier reuse decreases the readability and maintainability of code.
...
Bibliography
...
| [[JLS 2005AA. References#JLS 05]] | [§6.3.2, Obscured Declarationshttp://java.sun.com/docs/books/jls/third_edition/html/names.html#6.3.2] | ]]></ac:plain-text-body></ac:structured-macro> | |
| 
 | |||
| 
 | |||
| 
 | |||
| <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="8c30fcd6-f4f4-4efc-b1cb-bffaa1e404e3"><ac:plain-text-body><![CDATA[[[FindBugs 2008 | AA. References#FindBugs 08]] | ]]></ac:plain-text-body></ac:structured-macro> | <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e9705f46-f876-4737-b9d9-ef3c942aab4f"><ac:plain-text-body><![CDATA[ | 
| [[Bloch 2005AA. References#Bloch 05]] | Puzzle 67. All strung out | ]]></ac:plain-text-body></ac:structured-macro> | <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="49139cf8-9f9d-4b3b-8831-a8ec1e39913f"><ac:plain-text-body><![CDATA[ | 
| [[Bloch 2008AA. References#Bloch 08]] | Item 16. Prefer interfaces to abstract classes]]></ac:plain-text-body></ac:structured-macro> | 
...
01. Declarations and Initialization (DCL) DCL02-J. Declare all enhanced for statement loop variables final