我正在检查一些Java代码,我不擅长java至少有一些知识,如密封类,只读字段和不可覆盖的方法,但这对我来说很奇怪,final在方法中声明一个变量:
private static void queryGoogleBooks(JsonFactory jsonFactory, String query) throws Exception {
// Set up Books client.
final Books books = Books.builder(new NetHttpTransport(), jsonFactory)
.setApplicationName("Google-BooksSample/1.0")
.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) {
BooksRequest booksRequest = (BooksRequest) request;
booksRequest.setKey(ClientCredentials.KEY);
}
})
.build();
Run Code Online (Sandbox Code Playgroud)
你能告诉我final在这种情况下的含义是什么吗?
这是完整的代码:
Bol*_*ock 35
它只是使局部变量books不可变.这意味着它将始终是对Book创建和构建的同一对象的引用,并且不能更改为引用另一个对象,或者为null.
该Book物体本身仍然是可变的,如从访问的调用顺序可以看出.只有它的参考不是.
Nat*_* W. 12
在这种情况下,final Books books只意味着books必须为其分配一次值.
我喜欢使用final像这样的关键字,因为它显示变量的意图,我发现在查看代码时它是有价值的信息,因为它从情境中删除了另一个变量......可以这么说.
如果我没有标记变量,final那么它就会引起我的注意,因为它会很快改变价值.这些信息很有用,例如,在调试器中单步调试代码或重构和移动代码.
final:最终关键字的最后一句话| 归档时间: |
|
| 查看次数: |
30828 次 |
| 最近记录: |