成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

樂字節(jié)-Java8新特性之Base64和重復(fù)注解與類型注解

1treeS / 684人閱讀

摘要:上一篇小樂給大家說了樂字節(jié)新特性之,接下來小樂繼續(xù)給大家說一說新特性之和重復(fù)注解與類型注解。內(nèi)部類與方法相關(guān)的內(nèi)部類這是一個(gè)靜態(tài)類。也是一個(gè)靜態(tài)類。

上一篇小樂給大家說了《樂字節(jié)-Java8新特性之Date API》,接下來小樂繼續(xù)給大家說一說Java8新特性之Base64和重復(fù)注解與類型注解。

一、Base64

在Java 8中,內(nèi)置了Base64編解碼相關(guān)的特性。Java 8中使用三種類型的Base64編解碼:

簡易模式:輸出是完全按照A-Za-z0-9+/字符集映射的。編碼不會自己增加輸出行,解碼器也不會接受任何超出A-Za-z0-9+/范圍的內(nèi)容。

URL模式:輸出基于A-Za-z0-9+/的映射,但對于URL和文件名是安全的。

MIME模式:輸出對于MIME類型的內(nèi)容是友好的。如果超過76個(gè)字符,則會換行輸出。,并且換行符n之后會自動添加一個(gè)r。如果某行沒有r則說明輸出的內(nèi)容已經(jīng)結(jié)束。

1、Base64 內(nèi)部類與方法

Base64相關(guān)的內(nèi)部類:

Base64.Encoder:這是一個(gè)靜態(tài)類。實(shí)現(xiàn)了Base64的編碼功能,格式遵循了RFC 4648和RFC 2045標(biāo)準(zhǔn)。

Base64.Decoder:也是一個(gè)靜態(tài)類。實(shí)現(xiàn)了Base64的解碼功能。

相關(guān)的方法:

getEncoder():該方法返回一個(gè)使用基本Base64編碼格式的Encoder對象。相反的解碼方法是getDecoder()。

getUrlEncoder():該方法返回一個(gè)使用URL類型的Base64編碼格式的Encoder對象。相反的解碼方法是getUrlDecoder()。

getMimeEncoder():該方法返回一個(gè)使用MIME類型的Base64編碼格式的Encoder對象。相反的解碼方法是getMimeDecoder()。

2、Base64 使用

對于Base64應(yīng)用場景 無論是傳統(tǒng)軟件還是互聯(lián)網(wǎng)項(xiàng)目開發(fā)都是比較常見的,比如傳統(tǒng)的郵件,Http Url 地址通常都會應(yīng)用Base64 來對協(xié)議內(nèi)容或Url 地址信息進(jìn)行編解碼操作。

public static void main(String[] args) throws Exception {
        // 使用基本的Base64編碼
        String base64encodedString = Base64.getEncoder()
                .encodeToString("java8 is so Easy!!!".getBytes("utf-8"));
        System.out.println("Basic base64 encoding:" + base64encodedString);
        // 解碼并輸出結(jié)果
        byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
        System.out.println("Original content: " + new String(base64decodedBytes, "utf-8"));
        // 使用URL類型的Base64編碼
        base64encodedString = Base64.getUrlEncoder().encodeToString("https://www.sina.com".getBytes("utf-8"));
        System.out.println("URL base64 encoding:" + base64encodedString);
        // MIME類型的Base64編碼
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < 10; ++i) {
            stringBuilder.append(UUID.randomUUID().toString());
        }
        byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
        String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes);
        System.out.println("MIME base64 encoding:" + mimeEncodedString);
    }
二、重復(fù)注解與類型注解

Java5引入了注解特性,使得開發(fā)更加的靈活,特別是現(xiàn)在很多的應(yīng)用都是基于注解零配置開發(fā),都是建立在Annotation基礎(chǔ)之上,同時(shí)使得開發(fā)變得簡單,Java 8對注解處理提供了兩點(diǎn)改進(jìn):可重復(fù)的注解及可用于類型的注解。 通常用于框架底層代碼開發(fā)

1、可重復(fù)注解定義與使用
/**
 * 定義可重復(fù)注解
 */
@Repeatable(MyParams.class)
@Target({ ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyParam {
    String value() default "";
}

@Target({ ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyParams {
    MyParam[] value();
}


// 使用注解  方法上標(biāo)注重復(fù)注解
@MyParam("hello")
@MyParam("java8")
public  void testAnnotation(){
    System.out.println("可重復(fù)注解測試...");
}


/**
  查找指定方法級別注解 遍歷輸出注解value 值
*/
public static void main(String[] args)  throws  Exception{
    Class clazz = TestAnnotation.class;
    Method method = clazz.getMethod("testAnnotation");
    MyParam[] params = method.getAnnotationsByType(MyParam.class);
    for (MyParam param : params) {
        System.out.println(param.value());
    }
}
2、用于類型的注解
@Repeatable(MyParams.class)
@Target({ ElementType.FIELD, ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyParam {
    String value() default "";
}
//使用
public class TestAnnotation {
    private MyParam param;// 定義成員變量param 類型為MyParam 注解類型 
    public static void main(String[] args)  throws  Exception{
        // 獲取成員變量 并輸出變量類型
        Field field= clazz.getDeclaredField("param");
        System.out.println(field);
        System.out.println(field.getType());
    }
}



文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/74091.html

相關(guān)文章

  • 字節(jié)-Java8核心特性實(shí)戰(zhàn)函數(shù)式接口

    摘要:大家好,上一篇小樂給大家講述了樂字節(jié)核心特性表達(dá)式,點(diǎn)擊回顧。接下來繼續(xù)核心特性之函數(shù)式接口。感謝大家欣賞小樂帶來的核心特性之函數(shù)式接口,接下來還會更多核心技術(shù)講解,請關(guān)注樂字節(jié)如需要視頻課程,請搜索樂字節(jié)騰訊課堂 大家好,上一篇小樂給大家講述了《樂字節(jié)-Java8核心特性-Lambda表達(dá)式》,點(diǎn)擊回顧。接下來繼續(xù):Java8核心特性之函數(shù)式接口。 什么時(shí)候可以使用Lambda?通常...

    niceforbear 評論0 收藏0
  • 字節(jié)-Java8特性函數(shù)式接口

    摘要:上一篇小樂帶大家學(xué)過新特性表達(dá)式,什么時(shí)候可以使用通常表達(dá)式是用在函數(shù)式接口上使用的。使用實(shí)現(xiàn)創(chuàng)建產(chǎn)生一個(gè)工廠對象以上就是小樂帶給大家的新特性之函數(shù)式接口,下一篇將會為大家?guī)硇绿匦灾椒ㄒ?,敬請關(guān)注。 上一篇小樂帶大家學(xué)過 Java8新特性-Lambda表達(dá)式,什么時(shí)候可以使用Lambda?通常Lambda表達(dá)式是用在函數(shù)式接口上使用的。從Java8開始引入了函數(shù)式接口,其說明比較...

    lakeside 評論0 收藏0
  • 字節(jié)-Java8特性-接口默認(rèn)方法

    摘要:注意當(dāng)多個(gè)父接口中存在相同的默認(rèn)方法時(shí),子類中以就近原則繼承。定義靜態(tài)默認(rèn)方法這是版簡易計(jì)算器接口默認(rèn)方法使用定義接口并提供默認(rèn)打印方法定義接口默認(rèn)方法支持方法形參這是數(shù)值運(yùn)算基本接口。。。 總概 JAVA8 已經(jīng)發(fā)布很久,而且毫無疑問,java8是自java5(2004年發(fā)布)之后的最重要的版本。其中包括語言、編譯器、庫、工具和JVM等諸多方面的新特性。 Java8 新特性列表如下:...

    arashicage 評論0 收藏0
  • 字節(jié)Java8核心特性實(shí)戰(zhàn)方法引用

    摘要:大家好,我是樂字節(jié)的小樂,上一次我們說到了核心特性之函數(shù)式接口,接下來我們繼續(xù)了解又一核心特性方法引用。方法引用是一種更簡潔易懂的表達(dá)式。感謝光臨閱讀小樂的,敬請關(guān)注樂字節(jié)后續(xù)將繼續(xù)講述等前沿知識技術(shù)。 大家好,我是樂字節(jié)的小樂,上一次我們說到了Java8核心特性之函數(shù)式接口,接下來我們繼續(xù)了解Java8又一核心特性——方法引用。 showImg(https://segmentfaul...

    lakeside 評論0 收藏0
  • 聊聊 Java8 以后各個(gè)版本的特性

    摘要:于是抽時(shí)間看了看以后各個(gè)版本的特性,做了一個(gè)總結(jié)。年和公開版本發(fā)布,取名為。此后對應(yīng)版本就是,。發(fā)布,是一個(gè)重大版本更新。在此之后,就是每六個(gè)月發(fā)布一次新版本。以上和參考資料聊了一些關(guān)于的歷史,下面我們看看各個(gè)版本有那些新特性。 【這是 ZY 第 11 篇原創(chuàng)技術(shù)文章】 某天在網(wǎng)上閑逛,突然看到有篇介紹 Java 11 新特性的文章,頓時(shí)心里一驚,畢竟我對于 Java 的版本認(rèn)識...

    K_B_Z 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<