Initialiseer methodes in Java

Alweer een nieuw Java post want die taal blijft me maar boeien en verbazen. Wanneer je een variabele wilt initialiseren in een Java klasse, ga je dat doen op de volgende manier (of via de constructor).

private int factor = 20;

Stel dat factor een bepaalde berekening moet ondergaan voor het zijn waarde krijgt. Bijvoorbeeld afhankelijk van de temperatuur van gisteren. Dan kan je niet meer simpelweg = 20 schrijven. Je zou dit via de constructor doen maar dat vergeten we eventjes en gebruiken een andere methode en dat is de volgende.

{
factor = 20;
}

Wanneer je het new keyword gebruikt voor je klasse, dan wordt factor op 20 ingesteld. Je zou zo’n block kunnen gebruiken om complexe array’s te initialiseren (matrices bv).

Voor statische velden geldt hetzelfde.

public static int something;

static {
something = 303;
}

Als je ClassName.something doet, krijg je 303 terug.

final parameters in Java

Enkele weken terug kwam er een collega naar me met de vraag Wat is het nut van het keyword final in methode parameters? Veel duidelijker werden we niet van de uitleg op sommige websites omdat ze verkeerde voorbeelden gebruiken. De lector gaf ook niet echt een deftig uitleg en gaf aan dat het weinig gebruikt wordt. Mijn theorie is dat final parameters gebruikt wordt op objecten. De bedoeling van een final parameter is dat de methode het object niet kan laten wijzen naar een ander object. Je zou dit kunnen vergelijken met constante pointers bij C/C++. Een klein Java voorbeeldje hieronder.

Point.java
Line.java

Als je de klasse Line gaat compilen krijg je de volgende ouput terug.

Foutmelding final parameter in Java

Foutmelding final parameter in Java

Wat is het nu het nut zou je als lezer (als je tot hier geraakt bent en nog niet hersendood bent :p) afvragen? Als ik me parameter zijn adresruimte niet verander, is er toch niet mis. In principe is dat waar maar zo voorkom je dat je het doet en dat je aan de programmer, die je code gebruikt, kan zeggen dat zijn object niet naar een nieuw adresruimte wordt toegekent.

Butters: draft 2

Butters heeft een nieuwe update gekregen. Ipv toespitsen op HTTP, gaat het framework helpen om makkelijker applicaties te schrijven voor de desktop (gaande van CLI tot GUI). Op de Butters pagina is al één en ander aangepast. Momenteel heb ik nog maar weinig tijd/zin gehad om Python deftig te leren en zal daar eens grondig werk van maken (nadat alle schoolprojecten afgewerkt zijn en examens beetje voorbereid zijn).

Welke designpatronen ik zal gebruiken in Butters hangt een beetje af van me draft 2 dat ik aan het schrijven ben. De meest voorkomende patronen zal ik in ieder geval gebruiken (factory, singleton, MVC, …).
Onder Models versta ik allerhande zaken als files/databanken/communicatie. De Controllers spreken voor zich en worden gekozen bij het gepaste event. De Views geven op het scherm de gegevens terug, wat standaard de commandline zal zijn.

Geen nood, Butters komt er (ooit :p).

AIIDS blaast 1 kaars uit!

Vandaag was het exact één jaar geleden dat ik deze blog oprichtte. Na een jaar heeft deze blog het volgende bereikt:

  • 60 posts (populairste post)
  • 155 comments (153 spams gekregen)
  • De blog werd 5530 keer bezocht
  • 4 maart 2009 was de drukste dag met 106 bezoekers.

Bedankt aan alle (trouwe) bezoekers!