<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FClass_Definition%2Ffinal</id>
		<title>Java Tutorial/Class Definition/final - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FClass_Definition%2Ffinal"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/final&amp;action=history"/>
		<updated>2026-04-22T01:28:40Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/final&amp;diff=4226&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/final&amp;diff=4226&amp;oldid=prev"/>
				<updated>2010-06-01T05:00:55Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:00, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/final&amp;diff=4225&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/final&amp;diff=4225&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Base class for demonstation of final methods ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *     file: FinalMethod.java&lt;br /&gt;
 *  package: oreilly.hcj.finalstory&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
&lt;br /&gt;
/**  &lt;br /&gt;
 * Base class for demonstation of final methods.&lt;br /&gt;
 *&lt;br /&gt;
 * @author &lt;br /&gt;
 * @version $Revision: 1.3 $&lt;br /&gt;
 */&lt;br /&gt;
public class FinalMethod {&lt;br /&gt;
  /** A demo property. */&lt;br /&gt;
  private final String name;&lt;br /&gt;
  /** &lt;br /&gt;
   * Creates a new FinalMethodBase object.&lt;br /&gt;
   *&lt;br /&gt;
   * @param name The name to use.&lt;br /&gt;
   */&lt;br /&gt;
  protected FinalMethod(final String name) {&lt;br /&gt;
    this.name = name;&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Gets the value of the property name.&lt;br /&gt;
   *&lt;br /&gt;
   * @return The current name.&lt;br /&gt;
   */&lt;br /&gt;
  public final String getName() {&lt;br /&gt;
    return this.name;&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * A demo method.&lt;br /&gt;
   */&lt;br /&gt;
  public final void someMethod() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  &amp;quot;Blank&amp;quot; final fields ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
  private int i;&lt;br /&gt;
  A(int ii) {&lt;br /&gt;
    i = ii;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  private final int i = 0; // Initialized final&lt;br /&gt;
  private final int j; // Blank final&lt;br /&gt;
  private final A a; // Blank final reference&lt;br /&gt;
  // Blank finals MUST be initialized in the constructor:&lt;br /&gt;
  public MainClass() {&lt;br /&gt;
    j = 1; // Initialize blank final&lt;br /&gt;
    a = new A(1); // Initialize blank final reference&lt;br /&gt;
  }&lt;br /&gt;
  public MainClass(int x) {&lt;br /&gt;
    j = x; // Initialize blank final&lt;br /&gt;
    a = new A(x); // Initialize blank final reference&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new MainClass();&lt;br /&gt;
    new MainClass(47);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstrates how final variables are replaced at compilation time ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *     file: ExternalUser.java&lt;br /&gt;
 *  package: oreilly.hcj.finalstory&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
/*&lt;br /&gt;
 *     file: FinalReplacement.java&lt;br /&gt;
 *  package: oreilly.hcj.finalstory&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
/**  &lt;br /&gt;
 * Demonstrates how final variables are replaced at compilation time.&lt;br /&gt;
 *&lt;br /&gt;
 * @author &lt;br /&gt;
 * @version $Revision: 1.3 $&lt;br /&gt;
 */&lt;br /&gt;
public class ExternalUser {&lt;br /&gt;
  /** &lt;br /&gt;
   * Demo method.&lt;br /&gt;
   *&lt;br /&gt;
   * @param args Command line arguments.&lt;br /&gt;
   */&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    System.out.println(&amp;quot;The title of the book is: &amp;quot; + FinalReplacement.A_STRING + &amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstration of final class members ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *     file: FinalMembers.java&lt;br /&gt;
 *  package: oreilly.hcj.finalstory&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
&lt;br /&gt;
import java.util.Calendar;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.TimeZone;&lt;br /&gt;
/**  &lt;br /&gt;
 * Demonstration of final class members.&lt;br /&gt;
 *&lt;br /&gt;
 * @author &lt;br /&gt;
 * @version $Revision: 1.3 $&lt;br /&gt;
 */&lt;br /&gt;
public class FinalMembers {&lt;br /&gt;
  /** Holds the creation date-time of the instance. */&lt;br /&gt;
  private Date creationDate =&lt;br /&gt;
    Calendar.getInstance(TimeZone.getTimeZone(&amp;quot;GMT&amp;quot;))&lt;br /&gt;
            .getTime();&lt;br /&gt;
  /** Holds the modification date-time of the instance. */&lt;br /&gt;
  public Date modificationDate = creationDate;&lt;br /&gt;
  /**&lt;br /&gt;
   * Holds the creation date-time of the instance.  A protected version of createDate.&lt;br /&gt;
   */&lt;br /&gt;
  private final Date creationDate2 =&lt;br /&gt;
    Calendar.getInstance(TimeZone.getTimeZone(&amp;quot;GMT&amp;quot;))&lt;br /&gt;
            .getTime();&lt;br /&gt;
  /** Holds the creation date-time of the instance. */&lt;br /&gt;
  private final Date creationDate3;&lt;br /&gt;
  /** &lt;br /&gt;
   * Constructor&lt;br /&gt;
   *&lt;br /&gt;
   * @param creationDate The creation date.&lt;br /&gt;
   * @param modificationDate The last modification date.&lt;br /&gt;
   *&lt;br /&gt;
   * @throws IllegalArgumentException if modificationDate is less than creationDate.&lt;br /&gt;
   */&lt;br /&gt;
  public FinalMembers(final Date creationDate, final Date modificationDate) {&lt;br /&gt;
    if (modificationDate.rupareTo(creationDate) &amp;lt; 0) {&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;modificationDate&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    this.creationDate3 = creationDate;&lt;br /&gt;
    // do a bunch of date calculations. &lt;br /&gt;
    // this.creationDate3 = modificationDate;  // &amp;lt;= compiler error&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Second constructor.  Use current date for creation date.&lt;br /&gt;
   *&lt;br /&gt;
   * @param modificationDate The last modification date.&lt;br /&gt;
   */&lt;br /&gt;
  public FinalMembers(final Date modificationDate) {&lt;br /&gt;
    this.modificationDate = modificationDate;&lt;br /&gt;
    // &amp;lt;= compiler error: ?reationDate may not have been initialized?&lt;br /&gt;
    creationDate3 = null;  // comment this out to get the compiler error.&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Get the Date-Time when the object was created.&lt;br /&gt;
   *&lt;br /&gt;
   * @return The creation date of the object.&lt;br /&gt;
   */&lt;br /&gt;
  public Date getCreationDate() {&lt;br /&gt;
    return this.creationDate;&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Get the Date-Time when the object was created. A protected version of createDate.&lt;br /&gt;
   *&lt;br /&gt;
   * @return The creation date of the object.&lt;br /&gt;
   */&lt;br /&gt;
  public Date getCreationDate2() {&lt;br /&gt;
    return this.creationDate2;&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Set the modification date of the object.&lt;br /&gt;
   *&lt;br /&gt;
   * @param modificationDate The new modification date.&lt;br /&gt;
   */&lt;br /&gt;
  public void setModificationDate(Date modificationDate) {&lt;br /&gt;
    this.creationDate = modificationDate;&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Get the modification date.&lt;br /&gt;
   *&lt;br /&gt;
   * @return The current modification date.&lt;br /&gt;
   */&lt;br /&gt;
  public Date getModificationDate() {&lt;br /&gt;
    return this.modificationDate;&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Set the modification date of the object.&lt;br /&gt;
   *&lt;br /&gt;
   * @param modificationDate The new modification date.&lt;br /&gt;
   *&lt;br /&gt;
   * @throws NullPointerException If the modification date is null.&lt;br /&gt;
   */&lt;br /&gt;
  public void setModificationDate2(Date modificationDate) {&lt;br /&gt;
    if (modificationDate == null) {&lt;br /&gt;
      throw new NullPointerException();&lt;br /&gt;
    }&lt;br /&gt;
    // this.creationDate2 = modificationDate; // &amp;lt;= Compiler error.&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Used just to supress eclipse warnings on unused variables; irrelevant to the&lt;br /&gt;
   * example.&lt;br /&gt;
   */&lt;br /&gt;
  protected void supress() {&lt;br /&gt;
    System.out.println(this.creationDate3);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstration of final constants ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *     file: FinalParameters.java&lt;br /&gt;
 *  package: oreilly.hcj.finalstory&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
&lt;br /&gt;
/**  &lt;br /&gt;
 * Demonstration of final constants.&lt;br /&gt;
 *&lt;br /&gt;
 * @author &lt;br /&gt;
 * @version $Revision: 1.3 $&lt;br /&gt;
 */&lt;br /&gt;
public class FinalParameters {&lt;br /&gt;
  /** Contains a constant for both equations. */&lt;br /&gt;
  private static final double M = 9.3;&lt;br /&gt;
  /** &lt;br /&gt;
   * Calculate the results of an equation.&lt;br /&gt;
   *&lt;br /&gt;
   * @param inputValue Input to the equation.&lt;br /&gt;
   *&lt;br /&gt;
   * @return result of the equation.&lt;br /&gt;
   */&lt;br /&gt;
  public double equation2(double inputValue) {&lt;br /&gt;
    final double K = 1.414;&lt;br /&gt;
    final double X = 45.0;&lt;br /&gt;
    double result = (((Math.pow(inputValue, 3.0d) * K) + X) * M);&lt;br /&gt;
    double powInputValue = 0;&lt;br /&gt;
    if (result &amp;gt; 360) {&lt;br /&gt;
      powInputValue = X * Math.sin(result);&lt;br /&gt;
    } else {&lt;br /&gt;
      inputValue = K * Math.sin(result);&lt;br /&gt;
    }&lt;br /&gt;
    result = Math.pow(result, powInputValue);&lt;br /&gt;
    if (result &amp;gt; 360) {&lt;br /&gt;
      result = result / inputValue;&lt;br /&gt;
    }&lt;br /&gt;
    return result;&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Calculate the results of an equation.&lt;br /&gt;
   *&lt;br /&gt;
   * @param inputValue Input to the equation.&lt;br /&gt;
   *&lt;br /&gt;
   * @return result of the equation.&lt;br /&gt;
   */&lt;br /&gt;
  public double equation2Better(final double inputValue) {&lt;br /&gt;
    final double K = 1.414;&lt;br /&gt;
    final double X = 45.0;&lt;br /&gt;
    double result = (((Math.pow(inputValue, 3.0d) * K) + X) * M);&lt;br /&gt;
    double powInputValue = 0;&lt;br /&gt;
    if (result &amp;gt; 360) {&lt;br /&gt;
      powInputValue = X * Math.sin(result);&lt;br /&gt;
    } else {&lt;br /&gt;
      // inputValue = K * Math.sin(result); // &amp;lt;= Compiler error&lt;br /&gt;
    }&lt;br /&gt;
    result = Math.pow(result, powInputValue);&lt;br /&gt;
    if (result &amp;gt; 360) {&lt;br /&gt;
      result = result / inputValue;&lt;br /&gt;
    }&lt;br /&gt;
    return result;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstration of final variables ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *     file: FinalVariables.java&lt;br /&gt;
 *  package: oreilly.hcj.finalstory&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
&lt;br /&gt;
import javax.swing.JDialog;&lt;br /&gt;
/**  &lt;br /&gt;
 * Demonstration of final variables.&lt;br /&gt;
 *&lt;br /&gt;
 * @author &lt;br /&gt;
 * @version $Revision: 1.3 $&lt;br /&gt;
 */&lt;br /&gt;
public class FinalVariables {&lt;br /&gt;
  /** &lt;br /&gt;
   * Test code.&lt;br /&gt;
   *&lt;br /&gt;
   * @param args Command line arguments.&lt;br /&gt;
   */&lt;br /&gt;
  public static final void main(final String[] args) {&lt;br /&gt;
    System.out.println(&amp;quot;Note how the key variable is changed.&amp;quot;);&lt;br /&gt;
    someMethod(&amp;quot;JAVA_HOME&amp;quot;);&lt;br /&gt;
    someMethod(&amp;quot;ANT_HOME&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Get an environment property.&lt;br /&gt;
   *&lt;br /&gt;
   * @param environmentKey The key to an environment property.&lt;br /&gt;
   *&lt;br /&gt;
   * @return The value of the property.&lt;br /&gt;
   */&lt;br /&gt;
  public static String someBuggedMethod(final String environmentKey) {&lt;br /&gt;
    final String key = &amp;quot;env.&amp;quot; + environmentKey;&lt;br /&gt;
    System.out.println(&amp;quot;Key is: &amp;quot; + key);&lt;br /&gt;
    // key = new String(&amp;quot;someValue&amp;quot;); // &amp;lt;= compiler error.  &lt;br /&gt;
    return (System.getProperty(key));&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * Get an environment property.&lt;br /&gt;
   *&lt;br /&gt;
   * @param environmentKey The key to an environment property.&lt;br /&gt;
   *&lt;br /&gt;
   * @return The value of the property.&lt;br /&gt;
   */&lt;br /&gt;
  public static String someMethod(final String environmentKey) {&lt;br /&gt;
    final String key = &amp;quot;env.&amp;quot; + environmentKey;&lt;br /&gt;
    System.out.println(&amp;quot;Key is: &amp;quot; + key);&lt;br /&gt;
    return (System.getProperty(key));&lt;br /&gt;
  }&lt;br /&gt;
  /** &lt;br /&gt;
   * build the panel that comprises the dialog.&lt;br /&gt;
   *&lt;br /&gt;
   * @param name The name of the instance.&lt;br /&gt;
   */&lt;br /&gt;
  public void buildGUIDialog(final String name) {&lt;br /&gt;
    final String instanceName;&lt;br /&gt;
    if (name == null) {&lt;br /&gt;
      // no problem here.&lt;br /&gt;
      instanceName = getClass()&lt;br /&gt;
                       .getName() + hashCode();&lt;br /&gt;
    } else {&lt;br /&gt;
      // no problem here as well.&lt;br /&gt;
      instanceName = getClass()&lt;br /&gt;
                       .getName() + name;&lt;br /&gt;
    }&lt;br /&gt;
    JDialog dialog = new JDialog();&lt;br /&gt;
    // .. Do a bunch of layout and component building. &lt;br /&gt;
    dialog.setTitle(instanceName);&lt;br /&gt;
    // .. Do dialog assembly&lt;br /&gt;
    // instanceName = &amp;quot;hello&amp;quot;;  // &amp;lt;= compiler error&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  final Variables ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You can prefix a variable declaration with the keyword final to make its value unchangeable.&lt;br /&gt;
You can make both local variables and class fields final.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final int numberOfMonths = 12;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The casting (float) after 22 / 7 is needed to convert the value of division to float.&lt;br /&gt;
      Otherwise, an int will be returned and the pi variable will have a value of 3.0, instead of 3.1428.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Java Final variable: Once created and initialized, its value can not be changed ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    final int hoursInDay = 24;&lt;br /&gt;
    System.out.println(&amp;quot;Hours in a day = &amp;quot; + hoursInDay );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//Hours in a day = 24&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Making an entire class final ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
}&lt;br /&gt;
final class B {&lt;br /&gt;
  int i = 7;&lt;br /&gt;
  int j = 1;&lt;br /&gt;
  A x = new A();&lt;br /&gt;
  void f() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    B n = new B();&lt;br /&gt;
    n.f();&lt;br /&gt;
    n.i = 40;&lt;br /&gt;
    n.j++;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  The effect of final on fields ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
class A {&lt;br /&gt;
  int i; // Package access&lt;br /&gt;
  public A(int i) {&lt;br /&gt;
    this.i = i;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  private static Random rand = new Random();&lt;br /&gt;
  private String id;&lt;br /&gt;
  public MainClass(String id) {&lt;br /&gt;
    this.id = id;&lt;br /&gt;
  }&lt;br /&gt;
  // Can be compile-time constants:&lt;br /&gt;
  private final int VAL_ONE = 9;&lt;br /&gt;
  private static final int VAL_TWO = 99;&lt;br /&gt;
  // Typical public constant:&lt;br /&gt;
  public static final int VAL_THREE = 39;&lt;br /&gt;
  // Cannot be compile-time constants:&lt;br /&gt;
  private final int i4 = rand.nextInt(20);&lt;br /&gt;
  static final int i5 = rand.nextInt(20);&lt;br /&gt;
  private A v1 = new A(11);&lt;br /&gt;
  private final A v2 = new A(22);&lt;br /&gt;
  private static final A v3 = new A(33);&lt;br /&gt;
  // Arrays:&lt;br /&gt;
  private final int[] a = { 1, 2, 3, 4, 5, 6 };&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return id + &amp;quot;: &amp;quot; + &amp;quot;i4 = &amp;quot; + i4 + &amp;quot;, i5 = &amp;quot; + i5;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MainClass fd1 = new MainClass(&amp;quot;fd1&amp;quot;);&lt;br /&gt;
    fd1.v2.i++; &lt;br /&gt;
    fd1.v1 = new A(9); &lt;br /&gt;
    for (int i = 0; i &amp;lt; fd1.a.length; i++)&lt;br /&gt;
      fd1.a[i]++; &lt;br /&gt;
    System.out.println(fd1);&lt;br /&gt;
    System.out.println(&amp;quot;Creating new FinalData&amp;quot;);&lt;br /&gt;
    MainClass fd2 = new MainClass(&amp;quot;fd2&amp;quot;);&lt;br /&gt;
    System.out.println(fd1);&lt;br /&gt;
    System.out.println(fd2);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;fd1: i4 = 15, i5 = 5&lt;br /&gt;
Creating new FinalData&lt;br /&gt;
fd1: i4 = 15, i5 = 5&lt;br /&gt;
fd2: i4 = 15, i5 = 5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Using &amp;quot;final&amp;quot; with method arguments ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
  public void spin() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class B {&lt;br /&gt;
  void with(final A g) {&lt;br /&gt;
    // g = new A(); // Illegal -- g is final&lt;br /&gt;
  }&lt;br /&gt;
  void without(A g) {&lt;br /&gt;
    g = new A(); // OK -- g not final&lt;br /&gt;
    g.spin();&lt;br /&gt;
  }&lt;br /&gt;
  int g(final int i) {&lt;br /&gt;
    return i + 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    B bf = new B();&lt;br /&gt;
    bf.without(null);&lt;br /&gt;
    bf.with(null);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  You can override a private or private final method ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
  // Identical to &amp;quot;private&amp;quot; alone:&lt;br /&gt;
  private final void f() {&lt;br /&gt;
    System.out.println(&amp;quot;WithFinals.f()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  // Also automatically &amp;quot;final&amp;quot;:&lt;br /&gt;
  private void g() {&lt;br /&gt;
    System.out.println(&amp;quot;WithFinals.g()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class B extends A {&lt;br /&gt;
  private final void f() {&lt;br /&gt;
    System.out.println(&amp;quot;OverridingPrivate.f()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  private void g() {&lt;br /&gt;
    System.out.println(&amp;quot;OverridingPrivate.g()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class C extends B {&lt;br /&gt;
  public final void f() {&lt;br /&gt;
    System.out.println(&amp;quot;OverridingPrivate2.f()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void g() {&lt;br /&gt;
    System.out.println(&amp;quot;OverridingPrivate2.g()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    C op2 = new C();&lt;br /&gt;
    op2.f();&lt;br /&gt;
    op2.g();&lt;br /&gt;
    B op = op2;&lt;br /&gt;
    // op.f();&lt;br /&gt;
    // op.g();&lt;br /&gt;
    A wf = op2;&lt;br /&gt;
    // wf.f();&lt;br /&gt;
    // wf.g();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;OverridingPrivate2.f()&lt;br /&gt;
OverridingPrivate2.g()&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>