java - 声明一个外部类变量 final 以在内部类中访问它被认为是好的做法吗?

标签 java android optimization

在 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/

相关文章:

java - 使用复合键的 Hibernate XML 子类化

Java:如何在字符串中搜索 char 变量?

delphi - Delphi中的字符串: Pre-allocate memory to increase performance in simple cases?

java - Xmpp OutgoingFileTransfer 停止,状态 = 拒绝

android - 奇怪的 ListView 滚动问题

android - 在 Android 上设置 MonkeyRunner

java - 在 Android 中使用 DecimalFormat 格式化数字

mysql - 加快插入查询mysql

python - gekko 的 MIP 问题 - 它不会收敛到解决方案,也不返回错误

Java EE CDI 实例 |如何获得真正的类(class)