2015-04-22 52 views
4

的“延迟”相当于这是Go代码只是一个简单的例子:什么是Java

package main 

import "fmt" 

func main() { 
    defer fmt.Println("world") //use of keyword 'defer' 

    fmt.Println("hello") 
} 

我发现在Java中“延迟”的等效。

而是 '延迟' 我可以用

try { 
    //do something 
} finally { 
    //code using defer 
} 

有不使用的try/catch /终于任何替代?

+0

您是否正在寻找执行清理? – mbsingh

+0

'finally'有什么问题? – Radiodef

+0

是清理喜欢关闭连接,并释放内存.. – Romeo

回答

3

Java 7有一个try-with-resources statement

try-with-resources语句是声明一个或多个资源的try语句。资源是程序结束后必须关闭的对象。 try-with-resources语句确保每个资源在语句结束时都关闭。任何实现java.lang.AutoCloseable的对象(包含所有实现java.io.Closeable的对象)都可以用作资源。

以下示例读取文件的第一行。它使用BufferedReader的一个实例来读取文件中的数据。 BufferedReader中 是程序与 它完成之后,必须关闭资源:

static String readFirstLineFromFile(String path) throws IOException { 
    try (BufferedReader br = new BufferedReader(new FileReader(path))) { 
     return br.readLine(); 
    } 
} 

在这个例子中,在try-与资源 声明中宣布的资源是一个BufferedReader。声明语句在try关键字后面的括号内出现 。类别 Java SE 7及更高版本中的BufferedReader实现接口 java.lang.AutoCloseable。由于BufferedReader实例在使用try-with-resource语句中声明的 中,无论try语句是正常还是突然地完成 (由于BufferedReader.readLine抛出IOException异常),它将被关闭 。

3

在java中7及以上的,你可以使用try-与资源:

public static String readFirstLineFromFile(String path) throws IOException { 
    try (BufferedReader br = new BufferedReader(new FileReader(path))) { 
    return br.readLine(); 
    } 
} 

当您退出尝试将关闭资源 文档:link