Ich erforsche einige Beispielcode, und ich fand den folgenden Code:Java statischen Zugriff auf Super
A LoginService Schnittstelle:
public interface LoginService extends Serializable {
default boolean isLoggedIn (final HttpServletRequest req) {
return null != PortalUtil.getUserId(req);
}
}
A LoginServiceFactory, die eine verschachtelte LoginServiceImpl Klasse enthält, die LoginService implementiert
public class LoginServiceFactory implements Serializable {
private volatile LoginService loginService = null;
private final class LoginServiceImpl implements LoginService {
@Override
public boolean isLoggedIn(final HttpServletRequest req) {
/** this is the part I don't understand */
return LoginService.super.isLoggedIn(req);
}
}
}
Ich verstehe nicht, welche Methode in LoginService.super.isLoggedIn(req)
aufgerufen wird. Von meinem Verständnis ruft es isLoggedIn(req)
der Super-Schnittstelle der Schnittstelle LoginService
. Aber ich denke, das ist nicht richtig, da die Superschnittstelle Serializable
ist. Kann mir jemand helfen?
BEARBEITEN Ich habe meine Frage mit einem vollständigen Beispiel bearbeitet. Ich denke nicht, dass es wirklich doppelt ist, weil dieses Beispiel ein bisschen komplexer ist als die, die ich auf dieser Seite gefunden habe.
es ist keine statische Referenz, so viel wie es eher eine „voll qualifiziert“ Referenz ist. – Rogue
Es ist kein statischer Zugriff, es ist nur ein Qualifier, der explizit angibt, auf welche Klasse Sie zugreifen möchten. Es ist nützlich, wenn Sie versuchen, die äußere Klasse innerhalb einer inneren Klasse zu referenzieren. – 4castle
Wenn Sie sich den Kontext ansehen, in dem dieser Anruf stattfindet, würde es Ihnen (und uns) helfen, die Erklärung zu finden. –