我对内容提供商有疑问 每当我编写内容提供者时,我将URI MATCHER定义放在静态括号中,但URI MATCHER被声明为该类的私有数据成员。只有定义(新的UriMatcher)被放置在静态括号中。
有谁请让我知道原因。我试过谷歌搜索,但无法找到答案。我也会尝试,如果有人知道,请告诉我。
谢谢&问候,
SSuman185
答案 0 :(得分:6)
这是static initialization block。 定义成员或类变量时,该值必须适合单行(即使将其间隔更多),也不能包含复杂的逻辑。
对于成员变量,您可以在构造函数中执行此复杂的初始化。
本质上,静态初始化块是类变量的构造函数,允许您在初始化时使用更复杂的表达式。无论创建多少个实例,它只会在首次加载类时执行一次。
私有成员只是意味着该变量不能被其他类访问,它仍然可以被类本身访问。所以静态初始化块只创建URIMatcher一次(当加载类时),无论有多少个实例。