final oder nicht final bei Methoden

boelkstoff

Erfahrenes Mitglied
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:
Code:
    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:

Code:
    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
 
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?
 
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
 
Zurück