Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java对超级用户的静态访问_Java - Fatal编程技术网

Java对超级用户的静态访问

Java对超级用户的静态访问,java,Java,我正在探索一些示例代码,发现以下代码: 登录服务接口: public interface LoginService extends Serializable { default boolean isLoggedIn (final HttpServletRequest req) { return null != PortalUtil.getUserId(req); } } 一个LoginServiceFactory,其中包含实现LoginSe

我正在探索一些示例代码,发现以下代码:

登录服务接口:

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)
中调用了哪个方法。据我所知,它正在调用接口的超级接口
LoginService
isLoggedIn(req)
。但我认为这是不对的,因为超级接口是可序列化的。有人能帮我吗

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

当你在一个内部类中做

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

召唤

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

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

它不是一个静态引用,更像是一个“完全限定”引用。它不是静态访问,它只是一个限定符,明确说明您试图访问的
super
的类。当尝试从内部类引用外部类时,它很有用。如果您查看调用发生的上下文,它将帮助您(和我们)找到解释。科蒙人允许人们回答我的问题,因为我解释过,它比标记为已回答的问题更复杂……它用于调用isLoggedIn()在已实现的LoginService接口中定义的默认方法。如果只调用super.foo(),它将查找超类(即对象),因此将找不到方法。请注意,由于您的方法除了默认方法之外不做任何事情,因此整个方法是不必要的。关于你的咆哮:这就是为什么你应该从一开始就发布清晰的问题,并提供所有必要的上下文来回答它。