【发布时间】:2012-07-19 23:24:28
【问题描述】:
我知道这是一个相当简单的话题,但我真的很想把它转过来。
这是我想要做的,但它不喜欢 final 修饰符。有没有其他方法可以达到我想要的效果?这基本上是我想确保 id 在活动的整个生命周期中都不会改变。
private final long mId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mId = getIntent().getLongExtra(ID_KEY, -1);
}
我应该指出这是 Android 代码。感谢所有的帮助。我不担心 getter 或 setter 或任何人更改我的代码。我问的原因是为了让下一个开发人员接管我的代码。我发现这篇文章也有助于阐明一些观点。 Android - Activity Constructor vs onCreate
【问题讨论】:
-
这是一个类似的例子(但局部变量,不是类字段),只是我偶然发现 - 它在 JDK 中 - java.util.PriorityQueue 中的一些代码似乎正在初始化最终变量分两步。在方法“public E poll()”中,在第 593 行声明了一个局部 final 变量(但未初始化),然后在下一行初始化。最终诠释 n;最终 E x = (E) es[(n = --size)];