gpt4 book ai didi

java - 这个未命名的静态神秘语法是什么意思?

转载 作者:行者123 更新时间:2023-11-29 05:56:43 26 4
gpt4 key购买 nike

在这个 NotePadProvider 示例代码中,我注意到类内部有一个静态 block 没有任何名称并且没有任何类型:

static {
sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(NotePad.AUTHORITY, "notes", NOTES);
sUriMatcher.addURI(NotePad.AUTHORITY, "notes/#", NOTE_ID);
sUriMatcher.addURI(NotePad.AUTHORITY, "live_folders/notes", LIVE_FOLDER_NOTES);

sNotesProjectionMap = new HashMap<String, String>();
sNotesProjectionMap.put(NoteColumns._ID, NoteColumns._ID);
sNotesProjectionMap.put(NoteColumns.TITLE, NoteColumns.TITLE);
sNotesProjectionMap.put(NoteColumns.NOTE, NoteColumns.NOTE);
sNotesProjectionMap.put(NoteColumns.CREATED_DATE, NoteColumns.CREATED_DATE);
sNotesProjectionMap.put(NoteColumns.MODIFIED_DATE, NoteColumns.MODIFIED_DATE);

// Support for Live Folders.
sLiveFolderProjectionMap = new HashMap<String, String>();
sLiveFolderProjectionMap.put(LiveFolders._ID, NoteColumns._ID + " AS " +
LiveFolders._ID);
sLiveFolderProjectionMap.put(LiveFolders.NAME, NoteColumns.TITLE + " AS " +
LiveFolders.NAME);
// Add more columns here for more robust Live Folders.
}

这个static{}是什么意思?

此外,使用这种简洁的语法比使用更易读的语法有什么优势(我只是假设存在这样的语法,在回答第一个问题之前我不确定)。

最佳答案

那是类的静态初始化器。它只执行一次。什么时候?第一次在您的应用程序中使用该类。

这个想法是构造一些变量、结构、数据等(随便你喜欢什么),它们将在该类的所有实例中使用。或者,例如,简单地为正弦值构造一个查找表。

它有多种调用方式。所有这些情况:

  • new MyClass(); 先调用静态初始化器,再调用构造器
  • Class.forName("my.package.MyClass");
  • MyClass.staticMethodCallHere();
  • MyClass.class.methodCallHere();

关于java - 这个未命名的静态神秘语法是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com