摘要:上一篇小樂給大家說了樂字節新特性之,接下來小樂繼續給大家說一說新特性之和重復注解與類型注解。內部類與方法相關的內部類這是一個靜態類。也是一個靜態類。
上一篇小樂給大家說了《樂字節-Java8新特性之Date API》,接下來小樂繼續給大家說一說Java8新特性之Base64和重復注解與類型注解。
一、Base64在Java 8中,內置了Base64編解碼相關的特性。Java 8中使用三種類型的Base64編解碼:
簡易模式:輸出是完全按照A-Za-z0-9+/字符集映射的。編碼不會自己增加輸出行,解碼器也不會接受任何超出A-Za-z0-9+/范圍的內容。
URL模式:輸出基于A-Za-z0-9+/的映射,但對于URL和文件名是安全的。
MIME模式:輸出對于MIME類型的內容是友好的。如果超過76個字符,則會換行輸出。,并且換行符n之后會自動添加一個r。如果某行沒有r則說明輸出的內容已經結束。
1、Base64 內部類與方法Base64相關的內部類:
Base64.Encoder:這是一個靜態類。實現了Base64的編碼功能,格式遵循了RFC 4648和RFC 2045標準。
Base64.Decoder:也是一個靜態類。實現了Base64的解碼功能。
相關的方法:
getEncoder():該方法返回一個使用基本Base64編碼格式的Encoder對象。相反的解碼方法是getDecoder()。
getUrlEncoder():該方法返回一個使用URL類型的Base64編碼格式的Encoder對象。相反的解碼方法是getUrlDecoder()。
getMimeEncoder():該方法返回一個使用MIME類型的Base64編碼格式的Encoder對象。相反的解碼方法是getMimeDecoder()。
2、Base64 使用對于Base64應用場景 無論是傳統軟件還是互聯網項目開發都是比較常見的,比如傳統的郵件,Http Url 地址通常都會應用Base64 來對協議內容或Url 地址信息進行編解碼操作。
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); // 解碼并輸出結果 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); }二、重復注解與類型注解
Java5引入了注解特性,使得開發更加的靈活,特別是現在很多的應用都是基于注解零配置開發,都是建立在Annotation基礎之上,同時使得開發變得簡單,Java 8對注解處理提供了兩點改進:可重復的注解及可用于類型的注解。 通常用于框架底層代碼開發
1、可重復注解定義與使用/** * 定義可重復注解 */ @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(); } // 使用注解 方法上標注重復注解 @MyParam("hello") @MyParam("java8") public void testAnnotation(){ System.out.println("可重復注解測試..."); } /** 查找指定方法級別注解 遍歷輸出注解value 值 */ public static void main(String[] args) throws Exception{ Class2、用于類型的注解clazz = TestAnnotation.class; Method method = clazz.getMethod("testAnnotation"); MyParam[] params = method.getAnnotationsByType(MyParam.class); for (MyParam param : params) { System.out.println(param.value()); } }
@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()); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74091.html
摘要:大家好,上一篇小樂給大家講述了樂字節核心特性表達式,點擊回顧。接下來繼續核心特性之函數式接口。感謝大家欣賞小樂帶來的核心特性之函數式接口,接下來還會更多核心技術講解,請關注樂字節如需要視頻課程,請搜索樂字節騰訊課堂 大家好,上一篇小樂給大家講述了《樂字節-Java8核心特性-Lambda表達式》,點擊回顧。接下來繼續:Java8核心特性之函數式接口。 什么時候可以使用Lambda?通常...
摘要:上一篇小樂帶大家學過新特性表達式,什么時候可以使用通常表達式是用在函數式接口上使用的。使用實現創建產生一個工廠對象以上就是小樂帶給大家的新特性之函數式接口,下一篇將會為大家帶來新特性之方法引用,敬請關注。 上一篇小樂帶大家學過 Java8新特性-Lambda表達式,什么時候可以使用Lambda?通常Lambda表達式是用在函數式接口上使用的。從Java8開始引入了函數式接口,其說明比較...
摘要:注意當多個父接口中存在相同的默認方法時,子類中以就近原則繼承。定義靜態默認方法這是版簡易計算器接口默認方法使用定義接口并提供默認打印方法定義接口默認方法支持方法形參這是數值運算基本接口。。。 總概 JAVA8 已經發布很久,而且毫無疑問,java8是自java5(2004年發布)之后的最重要的版本。其中包括語言、編譯器、庫、工具和JVM等諸多方面的新特性。 Java8 新特性列表如下:...
摘要:大家好,我是樂字節的小樂,上一次我們說到了核心特性之函數式接口,接下來我們繼續了解又一核心特性方法引用。方法引用是一種更簡潔易懂的表達式。感謝光臨閱讀小樂的,敬請關注樂字節后續將繼續講述等前沿知識技術。 大家好,我是樂字節的小樂,上一次我們說到了Java8核心特性之函數式接口,接下來我們繼續了解Java8又一核心特性——方法引用。 showImg(https://segmentfaul...
摘要:于是抽時間看了看以后各個版本的特性,做了一個總結。年和公開版本發布,取名為。此后對應版本就是,。發布,是一個重大版本更新。在此之后,就是每六個月發布一次新版本。以上和參考資料聊了一些關于的歷史,下面我們看看各個版本有那些新特性。 【這是 ZY 第 11 篇原創技術文章】 某天在網上閑逛,突然看到有篇介紹 Java 11 新特性的文章,頓時心里一驚,畢竟我對于 Java 的版本認識...
閱讀 3669·2021-11-24 09:39
閱讀 1276·2021-09-30 09:48
閱讀 3258·2021-09-09 11:51
閱讀 2883·2021-09-08 10:41
閱讀 1329·2019-08-30 14:06
閱讀 2798·2019-08-30 14:01
閱讀 874·2019-08-29 17:11
閱讀 3169·2019-08-29 15:37