<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.1.3" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Reacties op: To Final or Not To Final</title>
	<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/</link>
	<description>Nederlandse blog over software ontwikkeling</description>
	<pubDate>Mon, 06 Oct 2008 22:29:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.3</generator>

	<item>
		<title>By: Erik van Oosten</title>
		<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-575</link>
		<author>Erik van Oosten</author>
		<pubDate>Mon, 05 Mar 2007 12:38:41 +0000</pubDate>
		<guid>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-575</guid>
					<description>Persoonlijk probeer ik altijd alle waarschuwingen van de Eclipse compiler weg te werken. Een fout als

&lt;code&gt;
public setMaxSize(int maxsize) {
  maxsize = maxsize;
}
&lt;/code&gt;

zou ik niet maken :)</description>
		<content:encoded><![CDATA[<p>Persoonlijk probeer ik altijd alle waarschuwingen van de Eclipse compiler weg te werken. Een fout als</p>
<p><code><br />
public setMaxSize(int maxsize) {<br />
  maxsize = maxsize;<br />
}<br />
</code></p>
<p>zou ik niet maken <img src='http://blog.finalist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Levi Hoogenberg</title>
		<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-585</link>
		<author>Levi Hoogenberg</author>
		<pubDate>Mon, 05 Mar 2007 19:24:07 +0000</pubDate>
		<guid>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-585</guid>
					<description>&#62;&#62; Wist je trouwens dat als je een private static definieert deze impliciet ook al final is?

Ik weet niet waar je op doelt, maar dit geldt niet voor variabelen. Dat dit voor overridebare elementen als methodes en klasses wel geldt is logisch (en heeft in principe niks met het static zijn te maken). Zou je kunnen uitleggen wat je hiermee bedoelt?</description>
		<content:encoded><![CDATA[<p>&gt;&gt; Wist je trouwens dat als je een private static definieert deze impliciet ook al final is?</p>
<p>Ik weet niet waar je op doelt, maar dit geldt niet voor variabelen. Dat dit voor overridebare elementen als methodes en klasses wel geldt is logisch (en heeft in principe niks met het static zijn te maken). Zou je kunnen uitleggen wat je hiermee bedoelt?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: peter</title>
		<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-587</link>
		<author>peter</author>
		<pubDate>Mon, 05 Mar 2007 21:15:38 +0000</pubDate>
		<guid>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-587</guid>
					<description>Helemaal eens met Levi!

Dit mag wel: 

public class Test {

    private static int X = 10;
    
    public static void main(){
        Test.X = 20;
    }
}

En dit mag niet, omdat X final is:

public class Test {

    private final static int X = 10;
    
    public static void main(){
        Test.X = 20;
    }
}


Lijkt me dus geen sprake van 'impliciet final'</description>
		<content:encoded><![CDATA[<p>Helemaal eens met Levi!</p>
<p>Dit mag wel: </p>
<p>public class Test {</p>
<p>    private static int X = 10;</p>
<p>    public static void main(){<br />
        Test.X = 20;<br />
    }<br />
}</p>
<p>En dit mag niet, omdat X final is:</p>
<p>public class Test {</p>
<p>    private final static int X = 10;</p>
<p>    public static void main(){<br />
        Test.X = 20;<br />
    }<br />
}</p>
<p>Lijkt me dus geen sprake van &#8216;impliciet final&#8217;</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: peter</title>
		<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-589</link>
		<author>peter</author>
		<pubDate>Mon, 05 Mar 2007 21:33:59 +0000</pubDate>
		<guid>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-589</guid>
					<description>&#62;&#62; Zelf ben ik vooral final velden gaan gebruiken in plaats van lazy initialization.

Kun je dit uitleggen want deze vergelijking snap ik niet helemaal. Het resultaat is in het voorbeeld namelijk niet gelijk... lazy initialization is in veel gevallen bedoelt voor operaties die een optioneel karater hebben; je stelt het aanmaken van een object uit te het moment waarop je het nodig hebt, zodat je ook alleen resources gebruikt &lt;i&gt;als&lt;/i&gt; je ze nodig hebt. Het car/engine voorbeeld wat je geeft met final is bedoelt om het bestaan van het engine object te garanderen, en maakt de engine al aan zonder dat je uberhaupt weet of je 'm nodig hebt.... alle resources worden meteen gealloceerd.</description>
		<content:encoded><![CDATA[<p>&gt;&gt; Zelf ben ik vooral final velden gaan gebruiken in plaats van lazy initialization.</p>
<p>Kun je dit uitleggen want deze vergelijking snap ik niet helemaal. Het resultaat is in het voorbeeld namelijk niet gelijk&#8230; lazy initialization is in veel gevallen bedoelt voor operaties die een optioneel karater hebben; je stelt het aanmaken van een object uit te het moment waarop je het nodig hebt, zodat je ook alleen resources gebruikt <i>als</i> je ze nodig hebt. Het car/engine voorbeeld wat je geeft met final is bedoelt om het bestaan van het engine object te garanderen, en maakt de engine al aan zonder dat je uberhaupt weet of je &#8216;m nodig hebt&#8230;. alle resources worden meteen gealloceerd.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Ernst-Jan</title>
		<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-603</link>
		<author>Ernst-Jan</author>
		<pubDate>Tue, 06 Mar 2007 20:12:55 +0000</pubDate>
		<guid>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-603</guid>
					<description>@Peter (lazy initialization)

Dat is inderdaad het 'nadeel' van deze aanpak. Maar als ik een auto gebruik ga ik er vanuit dat de motor beschikbaar is en niet pas als ik voor het eerst wil gaan rijden.

Als een object dus alleen kan werken als het andere object aanwezig is dan kan je er beter voor zorgen dat deze gelijk aanwezig is. Dit kan je afdwingen door de referentie hiernaar final te maken en de referentie naar dit object via een constructor te zetten, via new of via een argument van die constructor.</description>
		<content:encoded><![CDATA[<p>@Peter (lazy initialization)</p>
<p>Dat is inderdaad het &#8216;nadeel&#8217; van deze aanpak. Maar als ik een auto gebruik ga ik er vanuit dat de motor beschikbaar is en niet pas als ik voor het eerst wil gaan rijden.</p>
<p>Als een object dus alleen kan werken als het andere object aanwezig is dan kan je er beter voor zorgen dat deze gelijk aanwezig is. Dit kan je afdwingen door de referentie hiernaar final te maken en de referentie naar dit object via een constructor te zetten, via new of via een argument van die constructor.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Ernst-Jan</title>
		<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-604</link>
		<author>Ernst-Jan</author>
		<pubDate>Tue, 06 Mar 2007 20:22:17 +0000</pubDate>
		<guid>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-604</guid>
					<description>@Levi en @Peter (private static field is niet implicit final),

Jullie hebben gelijk, ik was hier iets te enthousiast :(. Voor private methodes geldt het inderdaad wel. De compiler en JVM kan deze behandelen als waren deze final, omdat ze inderdaad al niet overerft kunnen worden.</description>
		<content:encoded><![CDATA[<p>@Levi en @Peter (private static field is niet implicit final),</p>
<p>Jullie hebben gelijk, ik was hier iets te enthousiast :(. Voor private methodes geldt het inderdaad wel. De compiler en JVM kan deze behandelen als waren deze final, omdat ze inderdaad al niet overerft kunnen worden.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Ernst-Jan</title>
		<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-605</link>
		<author>Ernst-Jan</author>
		<pubDate>Tue, 06 Mar 2007 20:24:31 +0000</pubDate>
		<guid>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-605</guid>
					<description>@Erik,

Ik kom nog uit de tijd dat niet alle IDE's warnings geven voor deze fout ;-). Ik heb hier dus wel degelijk eens een paar uur aan besteed om deze fout op te lossen. 

Ik ken nog steeds mensen die zweren bij emacs of zelfs vi om java te schrijven.</description>
		<content:encoded><![CDATA[<p>@Erik,</p>
<p>Ik kom nog uit de tijd dat niet alle IDE&#8217;s warnings geven voor deze fout ;-). Ik heb hier dus wel degelijk eens een paar uur aan besteed om deze fout op te lossen. </p>
<p>Ik ken nog steeds mensen die zweren bij emacs of zelfs vi om java te schrijven.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Hugo Andrioli</title>
		<link>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-16081</link>
		<author>Hugo Andrioli</author>
		<pubDate>Thu, 17 Jan 2008 11:57:47 +0000</pubDate>
		<guid>http://blog.finalist.com/2007/03/05/to-final-or-not-to-final/#comment-16081</guid>
					<description>Beste Ernst Jan,

Goed stuk waarin je duidelijk hebt gemaakt dat fouten verkomen worden door het
gebruik van het final keyword. 

Even deze opmerking:Deze code compileert zo nog niet:(zie code onderaan)
- de constructor naam moet overeen komen met de klasse naam.
- de methode getEngine heeft geen type en geen return variabele.

Groeten,

Hugo

public class LazyCar {
 
  private Engine engine = null;
 
  public Car() {
  }
 
  public void drive() {
    getEngine().start();
  }
 
  private getEngine() {
    if (engine == null) {
      this.engine = new Engine();
    }
  }
}</description>
		<content:encoded><![CDATA[<p>Beste Ernst Jan,</p>
<p>Goed stuk waarin je duidelijk hebt gemaakt dat fouten verkomen worden door het<br />
gebruik van het final keyword. </p>
<p>Even deze opmerking:Deze code compileert zo nog niet:(zie code onderaan)<br />
- de constructor naam moet overeen komen met de klasse naam.<br />
- de methode getEngine heeft geen type en geen return variabele.</p>
<p>Groeten,</p>
<p>Hugo</p>
<p>public class LazyCar {</p>
<p>  private Engine engine = null;</p>
<p>  public Car() {<br />
  }</p>
<p>  public void drive() {<br />
    getEngine().start();<br />
  }</p>
<p>  private getEngine() {<br />
    if (engine == null) {<br />
      this.engine = new Engine();<br />
    }<br />
  }<br />
}</p>
]]></content:encoded>
				</item>
</channel>
</rss>
