在Java中,何时执行构造函数中的最后一个块?
例如:在Java中,何时执行构造函数中的最后一个块?,java,constructor,try-finally,Java,Constructor,Try Finally,例如: /** * Constructor */ public Test(InputStream in){ try{ this.inputStream = in; } finally{ inputStream.close(); } } 创建测试对象后,传递给讲师的输入流是否立即关闭?或者当测试对象被破坏时,它是否关闭?我不知道如何在C++中实现类似于析构函数的东西。p> 它作为构造函数的一部分执行。构造函数中执行的代码只是普通代码,没有奇怪的控制流
/**
* Constructor
*/
public Test(InputStream in){
try{
this.inputStream = in;
} finally{
inputStream.close();
}
}
创建测试对象后,传递给讲师的输入流是否立即关闭?或者当测试对象被破坏时,它是否关闭?我不知道如何在C++中实现类似于析构函数的东西。p> 它作为构造函数的一部分执行。构造函数中执行的代码只是普通代码,没有奇怪的控制流。(我的意思是在调用超类构造函数和运行变量/实例初始值设定项之后。)
close()
方法。您可能还需要实现,以便调用方可以在类中使用:
try (Test test = new Test(new FileInputStream("foo.txt")) {
// Do stuff with test
}
这将在
try
块结束时自动调用test.close()
。最后将在try之后立即执行。它在构造函数中并不重要。它在中有很好的定义
它说:
带有finally块的try语句通过首先执行try块来执行。还有一个选择:
- 如果try块的执行正常完成,则
执行块,然后有一个选项:
- 如果finally块正常完成,则try语句
正常完成 - 如果finally块由于原因S而突然完成,则try 由于S的原因,语句突然完成
- 如果finally块正常完成,则try语句
相关的:现有的答案是足够的,但也要考虑让您的类实现<代码>可关闭< /代码>,并在基础输入流上调用<代码>关闭()/代码>:@ CyyKnDALL。谢谢,我认为我最好为我的案例实现可关闭的。