2014-09-25 14 views
6

Qualcuno può dirmi come utilizzare il metodo main come finale in java.Perché è consentito avere un metodo principale finale in java?

mentre questo è consentito in java

public static final void main(String[] args) { 



} 

Non vedo alcun uso di renderla definitiva. comunque è statico quindi non possiamo sovrascriverlo.

+0

A meno che non si sta utilizzando questo metodo 'main' per altro che iniziare la vostra applicazione, non c'è assolutamente alcuna ragione per farlo' final'. –

risposta

10

L'aggiunta di final a un metodo statico può effettivamente fare la differenza. Si consideri il codice seguente:

class A { 
    public static void main(String[] args) { 
     System.out.println("A"); 
    } 
} 

class B extends A { 
    public static void main(String[] args) { 
     System.out.println("B"); 
    } 
} 

class C extends B { 
} 

public class Test { 
    public static void main(String[] args) { 
     C.main(args); // Will invoke B.main 
    } 
} 

Aggiunta final a A.main impedirebbe nascondere accidentale A.main. In altre parole, l'aggiunta final a A.main garantisce che B.main non è permesso, e che C.main stampa quindi "A" rispetto a, per esempio "B".

Perché siamo permesso di avere un metodo main finale in java?

Accanto al caso angolo sopra, aggiungendo final ad un metodo statico non fa molta differenza, quindi non vedo un grande punto in aggiunta di una regola per non consentendo esso.

Maggiori informazioni sono disponibili qui: Behaviour of final static method

+3

'final' impedirà di nascondere un metodo' static'. –

+0

Ho provato ad aggiungere l'ultimo al metodo principale di A, la classe ora ha errori di compilazione in Classe B - ** Impossibile eseguire l'override del metodo finale da A **. Sto usando Java 1.7. Questa risposta è valida? – gyan

+0

@gyan, non ti seguo. Quale parte pensi non sia valida? – aioobe

Problemi correlati