为什么我们应该在内容提供者的静态花括号中保留urimatcher定义?

时间:2011-05-09 09:45:04

标签: android android-contentprovider

我对内容提供商有疑问 每当我编写内容提供者时,我将URI MATCHER定义放在静态括号中,但URI MATCHER被声明为该类的私有数据成员。只有定义(新的UriMatcher)被放置在静态括号中。

有谁请让我知道原因。我试过谷歌搜索,但无法找到答案。我也会尝试,如果有人知道,请告诉我。

谢谢&问候,
SSuman185

1 个答案:

答案 0 :(得分:6)

这是static initialization block。 定义成员或类变量时,该值必须适合单行(即使将其间隔更多),也不能包含复杂的逻辑。

对于成员变量,您可以在构造函数中执行此复杂的初始化。

本质上,静态初始化块是类变量的构造函数,允许您在初始化时使用更复杂的表达式。无论创建多少个实例,它只会在首次加载类时执行一次。

私有成员只是意味着该变量不能被其他类访问,它仍然可以被类本身访问。所以静态初始化块只创建URIMatcher一次(当加载类时),无论有多少个实例。