2014-11-03 13 views
7

ho visto questo codice in uno degli esami di certificazione:principale metodo come definitiva in java

public class SimpleClass 
{ 
    int num; 
    final static void main(final String args[]) 
    { 
     String s1="new"; 
     String s2="String"; 
     String s3="Creation"; 
     System.out.println(s1+s2+s3); 
    } 
} 

so che i metodi finali sono quelli che non sono possibili per ignorare. So anche che se la solita firma del metodo main viene modificata, sarà trattata come qualsiasi altro metodo ordinario dalla JVM e non come main().

Tuttavia, le opzioni date a me erano:

1> Code won't compile 
2> Code will throw an exception 
3> will print newStringCreation. 

Non è possibile eseguire questo programma su IDE Eclipse. Qualcuno può spiegare quale dovrebbe essere la risposta e perché?

Ok lasciami fare la mia domanda in questo modo - Quando eseguirò il mio programma, cosa accadrà? Quale delle 3 opzioni di cui sopra dovrei scegliere?

+1

Nasty question. 'finale' non dovrebbe avere importanza. Ma anche "main" non è pubblico, il che mi preoccuperebbe. – Thilo

+0

Sì, il codice verrà compilato, non verrà eseguito. – Davio

+3

Bene, definisci "esegui"; se questo significa che lo avvii con 'java SimpleClass', allora genererà un'eccezione, poiché come hai detto tu stesso, non c'è, in effetti,' main() 'da eseguire. Inoltre, non è possibile sovrascrivere i metodi 'static' in alcun modo, forma o forma, quindi dichiararli' final' è ridondante. – fge

risposta

5

Il codice verrà compilato senza problemi, ma sarà un'eccezione runtime dicendo "metodo main pubblico non pubblico ". Il metodo principale deve essere pubblico perché deve essere chiamato da JVM, che è al di fuori dell'ambito del pacchetto e, quindi, richiederebbe l'identificatore di accesso-public. Se non riesci a eseguirlo in eclissi, prova il metodo arcaico di salvataggio del file in un blocco note con nomefile.java. Vai a cmd e raggiungi la posizione del file..Se sul desktop, usa il desktop del CD! Utilizzare i seguenti comandi per eseguire il file:

javac filename.java 

java filename 

Verrà visualizzata l'eccezione di runtime richiesta che ho menzionato sopra.

+0

Sono d'accordo con Stefan sulla sua risposta, non sono stato in grado di fornire una descrizione dettagliata come commento, quindi ho risposto separatamente. @Gpar, prova questo metodo, potresti trovare quello che stai cercando :) – hchawla

+0

Grazie a @hchawla, ho provato il tuo suggerimento, ma in cmd ho ricevuto l'errore chiamato "javac non è riconosciuto come comando interno o esterno". Per favore dimmi cosa dovrei fare dopo? – Gpar

+0

Eri nella stessa directory in cmd dove si trovava il file, quando hai eseguito il commento javac? – hchawla

8

final static void main non verrà eseguito, poiché main non è pubblico.

public final static void main funzionerà.

Almeno questo è il comportamento sul mio IDE Eclipse.

4

Il metodo main deve essere accessibile dall'esterno. Quindi, nel tuo caso l'applicazione compilerà ma eseguirà un'esecuzione in fase di esecuzione.

+1

Se genera un'eccezione, quale tipo di eccezione potrebbe essere? Spiacente, non sono in grado di eseguire il programma così come è su Eclipse IDE. – Gpar

0

Si dispone del metodo principale ma poiché il modificatore è definitivo, JVM non sarà in grado di eseguire il metodo principale del programma. Non si noterà alcun errore di compilazione.

È possibile eseguire il programma in Eclipse quando si effettua il cambio modificatore finale a

+0

Il metodo principale può essere definitivo. Dovrebbe essere pubblico finale. – Reetika

Problemi correlati