我正在浏览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?),但我仍然不明白为什么这个案例不适用于那里。
由于
答案 0 :(得分:1)
这实际上不是变量。这是匿名实现的常量。在界面中,它被编译为:
public interface RequestTransformer {
Request transformRequest(Request request);
public static final RequestTransformer IDENTITY = new RequestTransformer() {
@Override
public Request transformRequest(Request request) {
return request;
}
};
}
这是一种不好的做法(在接口中实现):)