以下是我測試某些語法的代碼。我想在try-block中返回一個對象,並在finally塊中做一些事情。但是當我運行我的代碼時,我得到NullPointException。原因是使用ReentrantLock
,但我不知道爲什麼。NPE in try-finally grammar
import java.util.concurrent.locks.ReentrantLock;
public class Main {
ReentrantLock lock;
public static void main(String[] args) {
try {
new Main().run();
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
System.out.println(returnTest().get());
}
A returnTest(){
// lock.lock();
try {
return new A();
} finally {
// lock.unlock();
}
}
}
class A {
public boolean get() {
return true;
}
}
如果我取消lock.lock()
和lock.unlock()
,我會得到NullPointException。 爲什麼?