Java静态访问超级

时间:2017-03-08 17:43:54

标签: java

我正在探索一些示例代码,我找到了以下代码:

LoginService接口:

public interface LoginService extends Serializable {

      default boolean isLoggedIn (final HttpServletRequest req) {

             return null != PortalUtil.getUserId(req);
      }
}

一个LoginServiceFactory,它包含一个实现LoginService的嵌套LoginServiceImpl类

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);
          }
    }
}

我不明白在LoginService.super.isLoggedIn(req)中调用了哪种方法。据我所知,它正在调用接口isLoggedIn(req)的超级接口LoginService。但我认为这是不对的,因为超级界面是Serializable。有人可以帮帮我吗?

修改 我已经用完整的例子编辑了我的问题。我不认为它真的重复,因为这个例子比我在这个网站上找到的要复杂一点。

1 个答案:

答案 0 :(得分:0)

当你在内班做

super.foo();将调用内部类的超类的foo()方法

致电

Outer.super.foo();将调用名为Outer的外部类的超类的foo()方法。

,如

class Outer extends OuterSuper {
    class Inner {
         public void someMethod() {
             Outer.super.foo();
         }
    }
}