Java SE 9 新特性简介,
分享于 点击 14206 次 点评:286
Java SE 9 新特性简介,
Java Language Changes for Java SE 9
https://docs.oracle.com/javase/9/language/toc.htm#JSLAN-GUID-B06D7006-D9F4-42F8-AD21-BF861747EDCF
模块化
关于模块化的内容可以看前两篇文章
这些更新都只是简单概述,具体如何使用还需要自己去实践,感受更新之后的好处。
More Concise try-with-resourcese Statements.
try-with-resources语句
try-with-resources语句是一种声明了一种或多种资源的try语句。多个资源声明使用封号隔开。资源是指在程序用完了之后必须关闭的对象。不管try语句是正常结束还是异常结束,try-with-resources语句保证了每个声明了的资源在语句结束的时候都会被关闭。任何实现了java.lang.AutoCloseable接口的对象,和实现了java.io.Closeable接口的对象,都可以当做资源使用。当有多个资源声明时,close()方法会自动按照声明相反的顺序执行。
public void test1(){
String instr = "licheng";
try (InputStream ins = new ByteArrayInputStream(instr.getBytes());){
ins.read();
} catch (Exception e) {
}
}
public void test2(){
String instr = "licheng";
InputStream ins = new ByteArrayInputStream(instr.getBytes());
try {
ins.read();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
jdk9中的变化
在JDK9中,资源的声明可以放到try的外面,在圆括号里面直接引用。
public void test3(){
String instr = "licheng";
InputStream ins = new ByteArrayInputStream(instr.getBytes());
try (ins){
ins.read();
} catch (Exception e) {
}
}
Small Language Changes in Java SE 9
注解@SafeVarargs 可以使用在私有的实例方法上了。
注解@SafeVarargs只能使用在不能被重载的方法上。包括静态方法,final定义的实例方法。而在Java SE 9中,它还可以使用在private的实例方法上。
含有下划线_的字符不在合法。
如果你使用下划线(“_”)作为定义,你的代码将不会再通过编译。
String _a = "";
支持私有的接口方法
支持私有接口方法,允许接口的非抽象方法之间共享代码。
// 接口
interface Logging {
String ORACLE = "Oracle_Database";
String MYSQL = "MySql_Database";
private void log(String message, String prefix) {
getConnection();
System.out.println("Log Message : " + prefix);
closeConnection();
}
default void logInfo(String message) {
log(message, "INFO");
}
default void logWarn(String message) {
log(message, "WARN");
}
default void logError(String message) {
log(message, "ERROR");
}
default void logFatal(String message) {
log(message, "FATAL");
}
private static void getConnection() {
System.out.println("Open Database connection");
}
private static void closeConnection() {
System.out.println("Close Database connection");
}
}
// 实现
final class LogOracle implements Logging {
}
final class LogMySql implements Logging {
}
// 测试
public class Tester {
public static void main(String []args) {
LogOracle log = new LogOracle();
log.logInfo("");
log.logWarn("");
log.logError("");
log.logFatal("");
LogMySql log1 = new LogMySql();
log1.logInfo("");
log1.logWarn("");
log1.logError("");
log1.logFatal("");
}
}
相关文章
- 暂无相关文章
用户点评