Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个未命名的静态神秘语法是什么意思?_Java - Fatal编程技术网

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

Java 这个未命名的静态神秘语法是什么意思?,java,Java,在这个NotePadProvider示例代码中,我注意到类中有一个静态块,没有任何名称,也没有任何类型: static { sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); sUriMatcher.addURI(NotePad.AUTHORITY, "notes", NOTES); sUriMatcher.addURI(NotePad.AUTHORITY, "notes/#", NOTE_ID); sUriMat

在这个NotePadProvider示例代码中,我注意到类中有一个静态块,没有任何名称,也没有任何类型:

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.
}
静态{
sUriMatcher=新的UriMatcher(UriMatcher.NO_匹配);
addURI(NotePad.AUTHORITY,“notes”,notes);
addURI(NotePad.AUTHORITY,“notes/#”,NOTE#ID);
addURI(NotePad.AUTHORITY,“live_文件夹/notes”,live_文件夹/notes);
sNotesProjectionMap=新HashMap();
sNotesProjectionMap.put(NoteColumns.\u ID,NoteColumns.\u ID);
sNotesProjectionMap.put(NoteColumns.TITLE,NoteColumns.TITLE);
sNotesProjectionMap.put(NoteColumns.NOTE,NoteColumns.NOTE);
sNotesProjectionMap.put(NoteColumns.CREATED\u日期,NoteColumns.CREATED\u日期);
sNotesProjectionMap.put(NoteColumns.MODIFIED\u日期,NoteColumns.MODIFIED\u日期);
//支持实时文件夹。
sLiveFolderProjectionMap=新HashMap();
sLiveFolderProjectionMap.put(LiveFolders.\u ID,NoteColumns.\u ID+“作为”+
LiveFolders.\u ID);
sLiveFolderProjectionMap.put(LiveFolders.NAME,NoteColumns.TITLE+“AS”+
LiveFolders.NAME);
//在此处添加更多列以获得更健壮的实时文件夹。
}
这是什么意思


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

这是类的静态初始值设定项。它只执行一次。什么时候第一次在应用程序中使用该类

其思想是构造一些变量、结构、数据等。。。(无论您喜欢什么)将在该类的所有实例中使用。或者,例如,简单地为正弦值构造一个查找表

有几种方法可以调用它。所有这些情况:

  • newmyclass()
    首先调用静态初始值设定项,然后调用构造函数
  • Class.forName(“my.package.MyClass”)
  • MyClass.staticMethodCallHere()
  • MyClass.class.methodCallHere()

这个静态{}块有什么好处

如果您有静态成员,则可以在不使用此块的情况下创建它,如:

static List<Integer> list = new ArrayList<Integer>();
static List=new ArrayList();
但是你不能用它做任何其他事情。此初始值设定项块使您能够提交对静态内容的操作:

static List<Integer> list; // = new ArrayList<Integer>();

static
{
    list = new ArrayList<Integer>();
    for(int i=0; i<10; i++)  // just an example
        list.add(i);
}
静态列表;//=新的ArrayList();
静止的
{
列表=新的ArrayList();

对于(int i=0;iThanks.这是在类的构造函数之前执行的吗?是否有其他语法?它与构造函数无关。执行此静态块不需要调用类的构造函数。作为静态块,它只初始化类的静态部分,与h类的实例变量(如构造函数所示)。好的,我现在知道了。该示例的作者将
static{}
课程结束时真的很混乱。@MartijnCourteaux:我只是回答ateiob的评论。这与你的答案无关。@Razvan:噢,对不起。我没有收到:D抱歉。我以前注意到了,并更正了,但谢谢:)这样更容易理解这很有趣,因为这允许在运行时初始化常量。也就是说,即使列表被声明为
static final