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

Android 为什么我们应该在内容提供者的静态花括号中保留urimatcher定义?,android,android-contentprovider,Android,Android Contentprovider,我对内容提供商有疑问。 每次编写内容提供者时,我都会将URI匹配器定义放在静态括号中,但URI匹配器被声明为类的私有数据成员。只有定义(新UriMatcher)被放在静态括号中 谁能告诉我原因吗。我试着用谷歌搜索,但找不到答案。我也会试试,如果有人已经知道了,请告诉我 谢谢和问候, SSuman185这是一个。 定义成员或类变量时,该值必须适合于一行(即使将其隔开更多),并且不能包含复杂的逻辑 对于成员变量,可以在构造函数中进行复杂的初始化 本质上,静态初始化块是类变量的构造函数,允许您在初始化

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

谁能告诉我原因吗。我试着用谷歌搜索,但找不到答案。我也会试试,如果有人已经知道了,请告诉我

谢谢和问候,
SSuman185

这是一个。 定义成员或类变量时,该值必须适合于一行(即使将其隔开更多),并且不能包含复杂的逻辑

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

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

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