欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
元數據(注釋?zhuān)? J2SE5之5

Metadata,元數據,是Tiger重要的改進(jìn)之一,也叫注釋?zhuān)ˋnnotate),這個(gè)改進(jìn)的前身,有大家熟悉的JavaDoc。

作為重要的改進(jìn),不少開(kāi)發(fā)組織已經(jīng)越來(lái)越多的開(kāi)始使用元數據,如EJB3中將大力采用元數據。元數據作為附加數據或注釋?zhuān)梢员籮avac編譯器或其他工具讀取,并根據不同的屬性指定,可以選擇被保存在類(lèi)文件中,也可以保存到運行時(shí),并通過(guò)Java的反射機制提供調用,從而提供了廣闊的使用空間,相信今后的Java開(kāi)發(fā)中大家少不了要熟練掌握和使用它。

元數據,定義是數據的數據,比如做數據挖掘時(shí),依據原始的數據提取出的供上層管理人員查看和分析的數據(上層管理人員更關(guān)注他們關(guān)注的數據,而不是基礎業(yè)務(wù)數據),上述所提的原始數據就叫元數據。

元數據有3類(lèi)作用:文檔編制、編譯器檢查和代碼分析。

先簡(jiǎn)單介紹3個(gè)Tiger內置的元數據:
Override、Deprecated和SuppressWarnings。

注釋的使用通過(guò)"@"+注釋名稱(chēng)的方式,@為我們熟悉的at標記,如果注釋后面有參數,則使用paraName = paraValue的方式,類(lèi)似方法的調用。

1)Override:
聲明Override父類(lèi)的方法,如果父類(lèi)無(wú)此方法將提示錯誤,可以避免錯誤:

@Override
public String toString() {
    return super.toString();
}

表示Override toString方法,如果把toString改為T(mén)oString,則編譯會(huì )報錯誤表示必須Override父類(lèi)的方法。

2)Deprecated:
用于對不應再使用的方法進(jìn)行注釋?zhuān)绻采w或調用聲明為Deprecated的方法,編譯器將提示警告。
Deprecated的使用比較特殊,必須放在方法前:

@Deprecated public doSomething() {
    ... ...
}

3)SuppressWarnings:
是Tiger的所有新功能的副功能,如我們在使用5.0的jdk編寫(xiě)jdk1.4.x和以前版本jdk的應用時(shí),會(huì )發(fā)現常使用的方法在編譯時(shí)會(huì )報出一大堆的警告,如:List testList = new ArrayList(); 會(huì )警告沒(méi)有定義類(lèi)型,不是類(lèi)型安全的代碼,此時(shí)需要在含此定義的方法里,使用該 SupperssWarnings:

@SuppressWarings(value={"unchecked"})
public void test() {
    List testList = new ArrayList();
    testList.add("test");
}

以上是內置的注釋?zhuān)酉聛?lái)看看怎么定義自己的注釋類(lèi)型,這才是最可以擴展和值得關(guān)注的部分:

定義一個(gè)注釋類(lèi)型:

package javayou.demo.j2se5;
import java.lang.annotation.*;

/**
 * 注釋的保持特性,
 *     此處定義注釋類(lèi)型AuthorDetail將保留至JVM裝載,供JVM讀取
 */
@Retention(RetentionPolicy.RUNTIME)

/*
 * 定義元注釋?zhuān)丛试S何種程序元素具有定義的注釋類(lèi)型,
 *     避免在其他地方誤用此注釋
 */
@Target(ElementType.METHOD)

/**
 * 定義一個(gè)注釋類(lèi)型,需要在interface前加:@
 */
public @interface AuthorDetail {
        //定義有3個(gè)屬性
        String name();
        String email();
        String callExtension();
}

使用例子:

package javayou.demo.j2se5;
import java.lang.annotation.Annotation;

public class MetadataDemo {
    @AuthorDetail(name="Liang.xf",
        email="
javayou@gmail.com", callExtension="351")
    public void demo() {
        System.out.println("MetadataDemo方法調用");
    }
    public static void main(String[] args) {
        MetadataDemo metadata = new MetadataDemo();
        try {
            Annotation[] annotation = metadata.getClass(
                ).getMethod("demo").getAnnotations();
            for (Annotation a : annotation) {
                System.out.println("作者: "+
                    ((AuthorDetail) a).name());
                System.out.println("郵箱: "+
                    ((AuthorDetail) a).email());
                System.out.println("分機: "+
                    ((AuthorDetail) a).callExtension());
            }
            System.out.println("--------------");
            metadata.demo();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

輸出:

作者: Liang.xf
郵箱:
javayou@gmail.com
分機: 351
--------------
MetadataDemo方法調用

注釋類(lèi)型的定義:創(chuàng )建一個(gè)interface,在interface前加上符號:@
注釋類(lèi)型的定義里,使用了@Retention,它是一種對注釋類(lèi)型的注釋?zhuān)灿?種預定義的注釋類(lèi)型(稱(chēng)為元注釋?zhuān)?,分別為Retention、Target、Documented和Inherited,它們的含義如下:

1)Target
定義允許何種程序元素可以具有此處定義的注釋類(lèi)型,它的值引用了ElementType的枚舉類(lèi)型,ElementType:

package java.lang.annotation;
public enum ElementType {
  TYPE,        // Class, interface, or enum (but not annotation)
  FIELD,                 // Field (including enumerated values)
  METHOD,             // Method (does not include constructors)
  PARAMETER,        // Method parameter
  CONSTRUCTOR,    // Constructor
  LOCAL_VARIABLE,    // Local variable or catch clause
  ANNOTATION_TYPE, // Annotation Types (meta-annotations)
  PACKAGE                // Java package
}

2)Retention
定義注釋類(lèi)型的保存方式,值引用了枚舉類(lèi)型RetentionPolicy的值,

package java.lang.annotation;
public enum RetentionPolicy {
  SOURCE,       // Annotation is discarded by the compiler
  CLASS,         // Annotation is stored in the class file, but ignored by the VM
  RUNTIME       // Annotation is stored in the class file and read by the VM
}

3)Documented:
Documented 表示注釋?xiě)摮霈F在類(lèi)的Javadoc中,而默認情況下,注釋不包括在 Javadoc 中。

4)Inherited:
表示定義的注釋類(lèi)型將具備繼承屬性,使用該注釋類(lèi)型的類(lèi)被繼承時(shí),其子類(lèi)仍具備父類(lèi)的注釋。

元數據比較復雜,而且應用面比較廣,在實(shí)際開(kāi)發(fā)和應用中摸索和引入是最好的,這里沒(méi)有舉出實(shí)際應用案例,只是介紹了其簡(jiǎn)單的用法,具體的案例在以后的實(shí)際應用經(jīng)驗中給予提供。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Tiger 中的注釋?zhuān)?1 部分: 向 Java 代碼中添加元數據
Java 中的注解-元注釋及示例
java Annotation注解
Java Annotation詳解
Java核心技術(shù)點(diǎn)之注解
Tiger系列三:Annotation第一部分:使用內置的Annotation
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久