乐字节-Java8新特性之Base64和重复注解与类型注解

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了乐字节-Java8新特性之Base64和重复注解与类型注解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

上一篇小乐给大家说了《乐字节-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、可重复注解定义与使用

@H_126_129@/** * 定义可重复注解 */ @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{ Class<TestAnnotation> 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());     } }    

脚本宝典总结

以上是脚本宝典为你收集整理的乐字节-Java8新特性之Base64和重复注解与类型注解全部内容,希望文章能够帮你解决乐字节-Java8新特性之Base64和重复注解与类型注解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。