...
Fields declared static final
are also safe for multithreaded use. (See rule "TSM03-J. Do not publish partially initialized objects.") However, remember that simply changing the modifier to final
might not prevent attackers from indirectly retrieving an incorrect value from the static
final
variable before its initialization. (See rule "DCL12DCL00-J. Prevent class initialization cycles" for more information.) Furthermore, individual members of the referenced object can also be changed if the object itself is mutable.
...
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="a45915fe4f0a0ac4-0e955267-44a0495a-bfb3b3d5-3e59e47e29c3eb344f8b8c56"><ac:plain-text-body><![CDATA[ | [[FT 2008 | AA. Bibliography#FT 08]] | Function Table Class Function Table | ]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="c46343faa5938025-f717e263-4d8946a2-8e1fb8cf-f51cdad91264b561eb247a89"><ac:plain-text-body><![CDATA[ | [[Gong 2003 | AA. Bibliography#Gong 03]] | 9.3 Static Fields | ]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="02dc2bdeb0067a1c-69f089cd-4ad44ff7-83868800-f2f82028501fb760e10e5733"><ac:plain-text-body><![CDATA[ | [[Nisewanger 2007 | AA. Bibliography#Nisewanger 07]] | Antipattern 5, Misusing Public Static Variables | ]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="845d1a49dc706ae7-a6dde367-40fb4cb6-906aa72f-4a2b8dbc077b4f62aa97a264"><ac:plain-text-body><![CDATA[ | [[Sterbenz 2006 | AA. Bibliography#Sterbenz 06]] | Antipattern 5, Misusing Public Static Variables | ]]></ac:plain-text-body></ac:structured-macro> |
...