# final oder nicht final bei Methoden



## boelkstoff (20. Juli 2004)

Hallo.

Ich benutze seit neusten Checkstyle, damit der Code ordentlich aussieht,
Nun schlägt mir checkstyle etwas vor, wo ich mir nicht sicher bin ob es richtig ist.

Ich habe ein einfaches (POJO) Object.
Dieses Object repräsentiert etwas
Ich habe das so geschrieben:

```
public Event(int id, String name, Date startdate,
            Date enddate, boolean lock) {
        this.eventId = id;
        this.eventName = name;
        this.eventStartDate = Calendar.getInstance();
        this.eventStartDate.setTime(startdate);
        this.eventEndDate = Calendar.getInstance();
        this.eventEndDate.setTime(enddate);
        this.eventLocked = lock;
    }[
```

Checkstyle schlägt mir nun final vor:


```
public Event(final int id, final String name, final Date startdate,
            final Date enddate, final boolean lock) {
        this.eventId = id;
        this.eventName = name;
        this.eventStartDate = Calendar.getInstance();
        this.eventStartDate.setTime(startdate);
        this.eventEndDate = Calendar.getInstance();
        this.eventEndDate.setTime(enddate);
        this.eventLocked = lock;
    }
```

Was ist richtiger 

mfg Phil


----------



## squeaker (20. Juli 2004)

Ich kann mir blos vorstellen, dass das final hier anzeigt, dass die Objekte nicht verändert werden (da diese ja per Referenz und nicht als Kopie übergeben werden). Von daher ist die Sache mit dem final gar nicht so schlecht - auch für den Optimierer in der JVM.
Was ist das CheckStyle?


----------



## Thomas Darimont (20. Juli 2004)

Hallo!

Das final bei Methodenparametern / Lokalenvariablen fällt beim Compilieren weg.... final unterstützt dich nur mehr oder weniger bei der Programmierung in dem es etwa hilft doppelte Zuweisungen von Variablen und dadurch entstehende Seiteneffekte zu vermeiden...
Siehe http://www.oreilly.com/catalog/hardcorejv/chapter/ch02.pdf

Ps. bei Methodenparametern und Lokalen variablen bringt final keinen Performancegewinn ... wie schon gesagt das Schlüsselwort fällt während des Compilierens weg. Bei Methodendeklarationen als final sieht das ganze etwas anders aus, da damit die "Virtuelle Methoden" findung etwas optimiert werden kann...

Gruß Tom


----------



## boelkstoff (20. Juli 2004)

@Thomas
vielen dank. ich schau es mir an.

@squeaker
Suns Codenconvention sagen dir etwas?
Checkstyle überprüft diese für dich (und weitere selbstbestimmbare)
http://checkstyle.sourceforge.net/

Auf der Seite gibt es auch zwei Eclipse Plugins


----------

