【问题标题】:variable / constructor in an interface接口中的变量/构造函数
【发布时间】:2015-04-13 02:21:32
【问题描述】:

我正在浏览picasso source code 并在lines 80-94 中遇到了这个块:

    public interface RequestTransformer {
    /**
     * Transform a request before it is submitted to be processed.
     *
     * @return The original request or a new request to replace it. Must not be null.
     */
    Request transformRequest(Request request);

    /** A {@link RequestTransformer} which returns the original request. */
    RequestTransformer IDENTITY = new RequestTransformer() {
      @Override public Request transformRequest(Request request) {
        return request;
      }
    };
  }

据我了解,它有点用静态构造函数在接口中声明一个变量。有人可以解释该代码应该做什么吗?我阅读了一篇关于接口中的构造函数的类似帖子 (Constructor in an Interface?),但我仍然不明白为什么这种情况不适用于那里。

谢谢

【问题讨论】:

    标签: java android picasso


    【解决方案1】:

    这实际上不是一个变量。这对于匿名实现来说是不变的。在接口内编译为:

    public interface RequestTransformer {
        Request transformRequest(Request request);
    
        public static final RequestTransformer IDENTITY = new RequestTransformer() {
            @Override
            public Request transformRequest(Request request) {
                return request;
            }
        };
    }
    

    这是一种不好的做法(在接口中实现):)

    【讨论】:

    猜你喜欢
    • 2020-03-18
    • 2012-10-14
    • 2011-02-17
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多