Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Automated update-Scrapy V0.1 Fixing Navigation links Automatic Nagivation Script

...

Wiki Markup
If a developer uses an identifier that has the same name as a public class, such as {{Vector}}, a subsequent maintainer might not be aware that this identifier does not actually refer to {{java.util.Vector}}, and might unintentionally use the custom {{Vector}} instead of the original {{java.util.Vector}} class. The custom type {{Vector}} can [shadow|BB. Definitions#shadow] a class name from {{java.util.Vector}}, as specified by [§6§6.3.2|http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.3.2] of the _Java Language Specification_ \[[JLS 2005|AA. Bibliography#JLS 05]\]. This can result in unexpected program behavior.

Wiki Markup
Well-defined import statements can resolve these issues. However, when reused name definitions are imported from other packages, use the _type-import-on-demand declaration_ (see [§7§7.5.2, "Type-Import-on-Demand Declaration"|http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.5.2] of the _Java Language Specification_ \[[JLS 2005|AA. Bibliography#JLS 05]\]). Additionally, a common, and potentially misleading, tendency is to produce the import statements _after_ writing the code, often via automatic inclusion of import statements by an IDE. This creates further ambiguity with respect to the names; when a custom type is found earlier in the Java include path than the intended type, no further searches are conducted. 

...

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="3c7553fd1eeccc02-4c1415bc-4d314f18-b8dd9395-1d1fc6717546a7fed89d7297"><ac:plain-text-body><![CDATA[

[[JLS 2005

AA. Bibliography#JLS 05]]

[§6§6.3.2, "Obscured Declarations"

http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.3.2]

]]></ac:plain-text-body></ac:structured-macro>

 

§6§6.3.1, "Shadowing Declarations"

 

§7§7.5.2, "Type-Import-On_Demand Declaration"

 

§14§14.4.3, "Shadowing of Names by Local Variables"

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="2093fd1120b3f332-eaf72aa2-4e194205-b0bbbbbb-167d5f88be51984f15c3a262"><ac:plain-text-body><![CDATA[

[[FindBugs 2008

AA. Bibliography#FindBugs 08]]

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="886c5c66c2d5660e-fc687cc6-4b6c4470-a4c5b2eb-d3a28d53c32150ca0e0fa508"><ac:plain-text-body><![CDATA[

[[Bloch 2005

AA. Bibliography#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="de0911f39adb1c98-3dbc9882-41f844b7-985a8de7-4e640e7a0934e2b43fe817e1"><ac:plain-text-body><![CDATA[

[[Bloch 2008

AA. Bibliography#Bloch 08]]

Item 16: Prefer interfaces to abstract classes

]]></ac:plain-text-body></ac:structured-macro>

...

DCL15DCL04-J. Do not shadow or obscure identifiers in subscopesPrevent class initialization cycles      01. Declarations and Initialization (DCL)      02. Expressions (EXP)