Java 9:代码语法更新

更新

2017.10的某天,Oracle发布了Java 9 ,Java 9的语言只更新了一小部分(jshell 除外),下面是一些简单的解读.Oracle的原文地址在这:访问原文

java标志

更新的部分

代码务必在Java 9环境中尝试,不然会编译报错.

一共更新了大概5个部分的语法更新,记录如下.

try自动关闭资源优化

实现了AutoCloseable或者Closeable接口的类,可以用try实现自动关闭资源,在JDK中的FileReader,FileInputStream,FileOutputStream等这些类都是可以自动关闭的.

来个官方的例子:

然后按照这个,我自己简单写了一个版本:

简化了一些代码.

@SafeVarargs注解

@SafeVarargs注释只能应用于不能被覆盖的方法。 这些包括静态方法,最终实例方法,以及Java SE 9中的新增私有实例方法。

您可以将钻石语法与匿名内部类一起使用

可以在Java程序中编写的类型(如int或String)称为可指定类型。 无法用Java程序编写的编译器内部类型称为不可指定类型。

由于钻石操作员使用的推断,可能会出现不可指定的类型。 因为使用菱形和匿名类构造函数的推断类型可能不在类文件中签名属性所支持的类型集之外,所以在Java SE 7中不允许使用具有匿名类的菱形。

在Java SE 9中,只要推断的类型是可指定的,就可以在创建匿名内部类时使用菱形运算符。

不能单独使用下划线

在Java 9中,不能单独使用下划线,因为以后可能给下划线(_)特殊含义,所以在Java 9中定义如下变量会无法编译(在Java 8中使用无影响).

私有接口方法可用

在Java 9中,官方说明是可以使用私有接口方法,但我发现,公有方法也可以用(但必须是public static修饰才可以).

参考如下:

大概就这些.

Java:@SpringApplicationConfiguraction和@WebIntegrationTest在Spring Boot中不能使用的解决方案

@SpringApplicationConfiguraction和@WebIntegrationTest解决方案

在Spring Boot 1.5.7 中@SpringApplicationConfiguraction和@WebIntegrationTest中不能使用了.

找了半天总算找到了解决方案.

记录如下.

java标志

源码

如果在Spring Boot中使用了Spring Security,并且使用了自定义UserDetails,在测试的时候需要使用如下方式:

JdbcTemplate:实现分页功能

实现分页

在数据多的时候,不分页JVM就会挂掉.由于是用的JdbcTemplate,所以就研究了下JdbcTemplate的分页.记录如下.

java

源码

部分代码,后面看时间更新为完整.

分页实体类:

生成分页的SQL语句:

InterSystems Cache 数据库的分页工具类(下面有MySQL的):

分页查询组件:

MySQL分页实现:

Oracle分页实现:

Java 8:Stream的使用

记录

开始在工作中接触一些Java 8 的内容,也开始使用Stream处理集合.下面是一些代码,有的是自己写的,有的来源于网上.

java标志

源码

Java:Spring MVC上传文件实战

一直很麻烦

说实话,Java的上传文件,还是稍微有点麻烦,要自己集成很多东西.在这一点上,我发现我更喜欢Flask的文件上传,寥寥几行就可以搞定文件上传.

看个Flask官方的例子:

搞定,关于Flask还有很多美好的传说..有意,请自行探索.

从一而终,看Java文件上传

在这里,我使用了Ajax上传文件.(不刷新页面,可以让你有更大的想象空间)

特诊如下:

  1. 使用了jquery.js,jquery.form.js,layer.js;
  2. 使用Ajax进行文件上传;
  3. 推荐使用iframe的方式进行调用,上传成功之后,ID会放进一个隐藏域.

大概特征如上,下面……兴奋的看源码吧.

java
image-2464

源码有点多…

第一个文件:前台upload.jsp

第二个文件:后台Controller.java

第三个文件:后台-文件实体Document.java

第四个文件:后台-字符串工具类

第五个文件:后台-日期工具类

第六个文件:后台-ID生成工具类

第七个文件:后台-上传处理Service

第八个文件:后台-【文件上传处理类】【核心】

看完着实不易…到此.