2016-07-22 8 views
0

Kürzlich arbeite ich mit einem einfachen Java-Web-App-Projekt (Anlegesteg 9).Java: Welchen Vorteil hat die Verwendung des vollständigen Klassenpfads anstelle des "Imports"?

Es verwirrte mich irgendwie da anstatt import verwenden, verwendet es voll Classpath überall, wie:

@java.lang.Override 
private void someAction(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws javax.servlet.ServletException, java.io.IOException { 
    javax.servlet.http.HttpSession sess = req.getSession(false); 
    if(sess==null){ 
     ((javax.servlet.http.HttpServletResponse)resp).sendError(javax.servlet.http.HttpServletResponse.SC_FORBIDDEN); 
    } 
} 

selbst für einfache Int oder String.

Ich weiß, import mit Wildcard sollte vermieden werden, aber gibt es einen Vorteil/Nutzen durch import vollständig fallenlassen?

+3

Der einzige Anwendungsfall, den ich mir vorstellen kann, ist, wenn Sie zwei Klassen mit dem gleichen einfachen Namen verwenden (zB 'foo.bar.MyClass' und' frob.nitz.MyClass'), wo Sie sich mindestens vollständig qualifizieren müssen einer der Namen; Andernfalls ist es nur mehr Code, um den vollständig qualifizierten Namen zu verwenden. Importe sind lediglich eine syntaktische Bequemlichkeit. –

+0

Es ist auch ein wenig einfacher, wenn Sie Code generieren, um den FQ-Namen zu verwenden, da Sie die zu importierenden Klassen nicht verfolgen müssen: Sie können den Code mit dem FQ-Namen bereits generieren und nicht generieren ein Importblock überhaupt. –

Antwort

0

Ich denke, der Vorteil ist, dass Sie den Compiler glücklich machen, da Sie durch Angabe des vollständigen Klassenpfads automatisch das Mehrdeutigkeitsproblem vermeiden, das bei Verwendung des Platzhalters auftreten kann. Aber dann müssen Sie mehr eingeben, aber ich denke, Jetty auto-Generiert diesen Code so, es ist keine große Sache, wenn Sie den Code generieren.

Verwandte Themen