在 Java 中,当您需要从内部类访问外部类成员或变量时,您必须将其声明为 final。参见 this question .
我的问题是:这是一个好的做法吗?
特别是当我为 android 编写代码时,我经常使用与此类似的解决方案:
final EditText textView = (EditText) setUrlDialog.findViewById(
R.id.dialog_text_set);
textView.setText(urlTw.getText());
alertDialogBulder.setPositiveButton(R.string.ok,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
textView.getText()
//Do something with the text
}
});
这种解决方案会导致性能问题吗?是否有任何其他原因可以避免频繁使用此解决方案?
最佳答案
由于示例中的 textView 不应该在所有地方使用,它使您可以更好地执行您已经在做的事情,因为该变量的使用接近于它的定义。必须使用 final 修饰符只是一种技术问题,不会导致任何性能损失。 More information .
将此与将 textView 声明为字段进行比较。如果 textView 是一个字段,从声明中肯定不清楚它是在哪个上下文中使用的。它还会造成(轻微的)性能损失,因为如果内部类被声明为私有(private),则内部类将需要一个合成的访问器对象来访问外部字段。 See here for a discussion on accessor objects .
关于java - 声明一个外部类变量 final 以在内部类中访问它被认为是好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8415836/