Eclipse註釋模板設置詳解

設置註釋模板的入口:Window->Preference->Java->Code Style->Code Template 然後展開Comments節點就是所有需設置註釋的元素。本文現就每一個元素逐一給大家介紹一下。

文件(Files)註釋標籤:

  1. /**  
  2. * @Title: {file_name}&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp;@Package&nbsp; {package_name}  
  3. * @Description: {todo}(用一句話描述該文件做什麼)&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp;@author&nbsp; {user}  
  4. * @date ${date}  
  5. * @version V1.0  
  6. */  
/**
* @Title: ${file_name}
* @Package ${package_name}
* @Description: ${todo}(用一句話描述該文件做什麼)
* @author ${user}
* @date ${date}
* @version V1.0
*/

類型(Types)註釋標籤(類的註釋):

  1. /**  
  2. * @ClassName: {type_name}&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp;@Description:&nbsp; {todo}(這裏用一句話描述這個類的作用)  
  3. * @author {user}&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp;@date&nbsp; {date}  
  4. *  
  5. * ${tags}  
  6. */  
/**
* @ClassName: ${type_name}
* @Description: ${todo}(這裏用一句話描述這個類的作用)
* @author ${user}
* @date ${date}
*
* ${tags}
*/

字段(Fields)註釋標籤:

  1. /**  
  2. * @Fields field:field:{todo}(用一句話描述這個變量表示什麼)  
  3. */  
/**
* @Fields field:field:{todo}(用一句話描述這個變量表示什麼)
*/
構造函數(Constructor)標籤:

  1. /**  
  2. * 創建一個新的實例 {enclosing_type}.&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp;&nbsp;</span></li><li class=""><span>*&nbsp; {tags}  
  3. */  
/**
* 創建一個新的實例 ${enclosing_type}.
*
* ${tags}
*/

方法(Methods)標籤:

  1. /**  
  2. * @Title: {enclosing_method}&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp;@Description:&nbsp; {todo}(這裏用一句話描述這個方法的作用)  
  3. * @param {tags}&nbsp;&nbsp;&nbsp;&nbsp;參數&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp;@return&nbsp; {return_type}    返回類型  
  4. * @throws  
  5. */  
/**
* @Title: ${enclosing_method}
* @Description: ${todo}(這裏用一句話描述這個方法的作用)
* @param ${tags}    參數
* @return ${return_type}    返回類型
* @throws
*/

覆蓋方法(Overriding Methods)標籤:

  1. /* (非 Javadoc)  
  2. <p>Title: {enclosing_method}</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>*&nbsp;<span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>Description:&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>*&nbsp; {tags}  
  3. * ${see_to_overridden}  
  4. */  
/* (非 Javadoc)
* <p>Title: ${enclosing_method}</p>
* <p>Description: </p>
* ${tags}
* ${see_to_overridden}
*/

代理方法(Delegate Methods)標籤:

  1. /**  
  2. {tags}&nbsp;&nbsp;</span></li><li class="alt"><span>*&nbsp; {see_to_target}  
  3. */  
/**
* ${tags}
* ${see_to_target}
*/

getter方法標籤:

  1. /**  
  2. * @return ${bare_field_name}  
  3. */  
/**
* @return ${bare_field_name}
*/

setter方法標籤:

  1. /**  
  2. * @param paramtheparamthe{bare_field_name} to set  
  3. */  
/**
* @param paramtheparamthe{bare_field_name} to set
*/

要實現上面的註釋模板,這需要將下面的配置文件導入就可以了:

  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <templates>  
  3.     <template  
  4.                 autoinsert=“false”  
  5.                 context=“filecomment_context”  
  6.                 deleted=“false”  
  7.                 description=“Comment for created Java files”  
  8.                 enabled=“true”  
  9.                 id=“org.eclipse.jdt.ui.text.codetemplates.filecomment”  
  10.                 name=“filecomment”>  
  11.     /**    
  12.     * @Title: {file_name}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@Package&nbsp; {package_name}  
  13.     * @Description: {todo}(用一句話描述該文件做什麼)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@author&nbsp; {user}  
  14.     * @date {date}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@version&nbsp;V1.0&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">template</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">template</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">autoinsert</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">context</span><span>=</span><span class="attribute-value">"typecomment_context"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">deleted</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">description</span><span>=</span><span class="attribute-value">"Comment&nbsp;for&nbsp;created&nbsp;types"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">enabled</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">id</span><span>=</span><span class="attribute-value">"org.eclipse.jdt.ui.text.codetemplates.typecomment"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">name</span><span>=</span><span class="attribute-value">"typecomment"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@ClassName:&nbsp; {type_name}  
  15.     * @Description: {todo}(這裏用一句話描述這個類的作用)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@author&nbsp; {user}  
  16.     * @date {date}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; {tags}  
  17.     */  
  18.     </template>  
  19.     <template  
  20.                 autoinsert=“false”  
  21.                 context=“fieldcomment_context”  
  22.                 deleted=“false”  
  23.                 description=“Comment for fields”  
  24.                 enabled=“true”  
  25.                 id=“org.eclipse.jdt.ui.text.codetemplates.fieldcomment”  
  26.                 name=“fieldcomment”>  
  27.     /**  
  28.     * @Fields field:field:{todo}(用一句話描述這個變量表示什麼)  
  29.     */  
  30.     </template>  
  31.     <template  
  32.                 autoinsert=“false”  
  33.                   context=“constructorcomment_context”  
  34.                 deleted=“false”  
  35.                 description=“Comment for created constructors”  
  36.                 enabled=“true”  
  37.                 id=“org.eclipse.jdt.ui.text.codetemplates.constructorcomment”  
  38.                 name=“constructorcomment”>  
  39.     /**  
  40.      * 創建一個新的實例 {enclosing_type}.&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; {tags}  
  41.      */  
  42.     </template>  
  43.         <template  
  44.                 autoinsert=“false”  
  45.                 context=“methodcomment_context”  
  46.                 deleted=“false”  
  47.                 description=“Comment for non-overriding methods”  
  48.                 enabled=“true”  
  49.                 id=“org.eclipse.jdt.ui.text.codetemplates.methodcomment”  
  50.                 name=“methodcomment”>  
  51.     /**  
  52.     * @Title: {enclosing_method}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@Description:&nbsp; {todo}(這裏用一句話描述這個方法的作用)  
  53.     * @param {tags}&nbsp;&nbsp;&nbsp;&nbsp;參數&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp; {return_type}    返回類型  
  54.     * @throws  
  55.     */  
  56.     </template>  
  57.     <template  
  58.                 autoinsert=“true”  
  59.                 context=“overridecomment_context”  
  60.                 deleted=“false”  
  61.                 description=“Comment for overriding methods”  
  62.                 enabled=“true”  
  63.                 id=“org.eclipse.jdt.ui.text.codetemplates.overridecomment”  
  64.                 name=“overridecomment”>  
  65.     /* (非 Javadoc)  
  66.     * <p>Title: {enclosing_method}</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>Description:&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; {tags}  
  67.     * {see_to_overridden}&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">template</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">template</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">autoinsert</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">context</span><span>=</span><span class="attribute-value">"delegatecomment_context"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">deleted</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">description</span><span>=</span><span class="attribute-value">"Comment&nbsp;for&nbsp;delegate&nbsp;methods"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">enabled</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">id</span><span>=</span><span class="attribute-value">"org.eclipse.jdt.ui.text.codetemplates.delegatecomment"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">name</span><span>=</span><span class="attribute-value">"delegatecomment"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; {tags}  
  68.      * {see_to_target}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">template</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">template</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">autoinsert</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">context</span><span>=</span><span class="attribute-value">"gettercomment_context"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">deleted</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">description</span><span>=</span><span class="attribute-value">"Comment&nbsp;for&nbsp;getter&nbsp;method"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">enabled</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">id</span><span>=</span><span class="attribute-value">"org.eclipse.jdt.ui.text.codetemplates.gettercomment"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">name</span><span>=</span><span class="attribute-value">"gettercomment"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp; {bare_field_name}  
  69.     */  
  70.     </template>  
  71.     <template  
  72.                 autoinsert=“true”  
  73.                 context=“settercomment_context”  
  74.                 deleted=“false”  
  75.                 description=“Comment for setter method”  
  76.                 enabled=“true”  
  77.                 id=“org.eclipse.jdt.ui.text.codetemplates.settercomment”  
  78.                 name=“settercomment”>  
  79.     /**  
  80.      * @param paramtheparamthe{bare_field_name} to set  
  81.      */  
  82.     </template>  
  83. </templates>  
<?xml version="1.0" encoding="UTF-8"?>
<templates>
    <template
                autoinsert="false"
                context="filecomment_context"
                deleted="false"
                description="Comment for created Java files"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.filecomment"
                name="filecomment">
    /**  
    * @Title: ${file_name}
    * @Package ${package_name}
    * @Description: ${todo}(用一句話描述該文件做什麼)
    * @author ${user}
    * @date ${date}
    * @version V1.0  
    */
    </template>
    <template
                autoinsert="false"
                context="typecomment_context"
                deleted="false"
                description="Comment for created types"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.typecomment"
                name="typecomment">
    /**
    * @ClassName: ${type_name}
    * @Description: ${todo}(這裏用一句話描述這個類的作用)
    * @author ${user}
    * @date ${date}
    *
    * ${tags}
    */
    </template>
    <template
                autoinsert="false"
                context="fieldcomment_context"
                deleted="false"
                description="Comment for fields"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment"
                name="fieldcomment">
    /**
    * @Fields field:field:{todo}(用一句話描述這個變量表示什麼)
    */
    </template>
    <template
                autoinsert="false"
                  context="constructorcomment_context"
                deleted="false"
                description="Comment for created constructors"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment"
                name="constructorcomment">
    /**
     * 創建一個新的實例 ${enclosing_type}.
     *
     * ${tags}
     */
    </template>
        <template
                autoinsert="false"
                context="methodcomment_context"
                deleted="false"
                description="Comment for non-overriding methods"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.methodcomment"
                name="methodcomment">
    /**
    * @Title: ${enclosing_method}
    * @Description: ${todo}(這裏用一句話描述這個方法的作用)
    * @param ${tags}    參數
    * @return ${return_type}    返回類型
    * @throws
    */
    </template>
    <template
                autoinsert="true"
                context="overridecomment_context"
                deleted="false"
                description="Comment for overriding methods"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.overridecomment"
                name="overridecomment">
    /* (非 Javadoc)
    * <p>Title: ${enclosing_method}</p>
    * <p>Description: </p>
    * ${tags}
    * ${see_to_overridden}
    */
    </template>
        <template
                autoinsert="true"
                context="delegatecomment_context"
                deleted="false"
                description="Comment for delegate methods"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment"
                name="delegatecomment">
    /**
     * ${tags}
     * ${see_to_target}
     */
    </template>
    <template
                autoinsert="false"
                context="gettercomment_context"
                deleted="false"
                description="Comment for getter method"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.gettercomment"
                name="gettercomment">
    /**
    * @return ${bare_field_name}
    */
    </template>
    <template
                autoinsert="true"
                context="settercomment_context"
                deleted="false"
                description="Comment for setter method"
                enabled="true"
                id="org.eclipse.jdt.ui.text.codetemplates.settercomment"
                name="settercomment">
    /**
     * @param paramtheparamthe{bare_field_name} to set
     */
    </template>
</templates>



發佈了60 篇原創文章 · 獲贊 71 · 訪問量 57萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章