public class NewFutureOverview<E> {
/**
* --4--
* 新增的类型安全检查
* @SafeVarags
*/
@SafeVarargs
public static <T> void addToList3 (List<T> listArg, T... elements) {
for (T x : elements) {
listArg.add(x);
}
}
/**
* --5--
* try-with-resources能够确保需要关闭的资源在声明结束后被关闭
* 但是需要被关闭的资源必须实现AutoCloseable接口
*/
public static void testTryWithResources(){
Path path = Paths.get("e:/logs","access.log");
try {
//public class BufferedReader extends Reader
//public abstract class Reader implements Readable, Closeable
//public interface Closeable extends AutoCloseable
BufferedReader br = Files.newBufferedReader(path, Charset.defaultCharset());
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* --6--
* 关于对异常的操作
* 在java 1.7以前的版本一个方法中只能抛出一次异常,1.7支持多个
* 在java 1.7可以在catch捕获多个异常,且看下面的例子
* @throws FirstException
* @throws SecondException
*/
public static void testException(String result) throws FirstException, SecondException{
/*
* 选择抛出异常
* 有如下的异常类
* class FirstException extends Exception
* class SecondException extends Exception
*/
if(result.equals("first")){
throw new FirstException();
}else{
throw new SecondException();
}
/*
* 调用testException这个方法的时候,我们可以用下面的写法
* 注意异常的捕获方式
*/
/*try {
testException("first");
} catch (FirstException | SecondException e) {
System.out.println(e.getMessage());
}*/
}
}
1. switch 增加对String的支持 (字符,整形,字符串型)
2. 集合
2. 集合
- 新增 TransferQueue 接口,是 BlockingQueue 的改进版,实现类为 LinkedTransferQueue
增添了使用一个try-with-resources语句自动关闭Connection, ResultSet, and Statement类型资源的功能。详见Processing SQL Statements.下的Closing Connections 索引。
RowSet的1.1:引进的RowSetFactory接口和RowSetProvider类,这使你通过JDBC驱动程序创建row sets的所有类型。详见Using JdbcRowSet Objects中的Using the RowSetFactory Interface。
/**
* try-with-resources能够确保需要关闭的资源在声明结束后被关闭
* 但是需要被关闭的资源必须实现AutoCloseable接口
*/
public static void testTryWithResources(){
Path path = Paths.get("e:/logs","access.log");
try {
//public class BufferedReader extends Reader
//public abstract class Reader implements Readable, Closeable
//public interface Closeable extends AutoCloseable
BufferedReader br = Files.newBufferedReader(path, Charset.defaultCharset());
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 关于对异常的操作
* 在java 1.7以前的版本一个方法中只能抛出一次异常,1.7支持多个
* 在java 1.7可以在catch捕获多个异常,且看下面的例子
* @throws FirstException
* @throws SecondException
*/
public static void testException(String result) throws FirstException, SecondException{
/*
* 选择抛出异常
* 有如下的异常类
* class FirstException extends Exception
* class SecondException extends Exception
*/
if(result.equals("first")){
throw new FirstException();
}else{
throw new SecondException();
}
/*
* 调用testException这个方法的时候,我们可以用下面的写法
* 注意异常的捕获方式
*/
/*try {
testException("first");
} catch (FirstException | SecondException e) {
System.out.println(e.getMessage());
}*/
}
4.有限的类型内推
创建泛型对象时类型推断
只要编译器可以从上下文中推断出类型参数,你就可以用一对空着的尖括号<>来代替泛型参数。这对括号私下被称为菱形(diamond)。 在Java SE 7之前,你声明泛型对象时要这样
List<String> list = new ArrayList<String>();
而在Java SE7以后,你可以这样
List<String> list = new ArrayList<>();
因为编译器可以从前面(List)推断出推断出类型参数,所以后面的ArrayList之后可以不用写泛型参数了,只用一对空着的尖括号就行。当然,你必须带着”菱形”<>,否则会有警告的。
Java SE7 只支持有限的类型推断:只有构造器的参数化类型在上下文中被显著的声明了,你才可以使用类型推断,否则不行。
List<String> list = new ArrayList<>();
list.add("A");
//这个不行
list.addAll(new ArrayList<>());
// 这个可以
List<? extends String> list2 = new ArrayList<>();
list.addAll(list2);


被折叠的 条评论
为什么被折叠?



