java - 为什么方法参数中要用Final

标签 java android

在编写 android 代码时,我遇到了以下事情

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        convertView = _inflater.inflate(R.layout.abstract_list_row_item, null);
        move.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {  
                    // if btn is clcked then data is changed an we need to refresh framents
                    MainAppDataController.getInstance().setIsDataChanged(true);
                    callWhiteListDB = new CallWhiteListDB(_context);
                    callWhiteListDB.openToWrite();
                    callWhiteListDB.insert(allContacts.get(position).name, allContacts.get(position).number);
                    callWhiteListDB.close();

                    callBlackListDB = new CallBlackListDB(_context);
                    callBlackListDB.openToWrite();
                    callBlackListDB.deleteSingleItem(allContacts.get(position).dbId);
                    callBlackListDB.close();
                    populateList(position);
                    notifyListView(view);
                }
            });
        return convertView;

在上面的例子中getView()方法具有 intposition、ViewconvertView、ViewGroupparent 等参数。当我开始在 onclick() 中使用位置变量时,我的观察是,Eclipse 抛出编译错误并要求将位置设置为最终位置。为什么我要把它定为最终的? AFAIK Final 用于常量。

最佳答案

final 用于方法参数中,以使引用在传递到方法后不可更改。这是保护传递参数的特殊方法。因此,接收方法将无法使用新对象或值重新初始化它

关于java - 为什么方法参数中要用Final,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20795190/

相关文章:

java - Spring 注入(inject)时向servlet过滤器添加in-it参数

java - 为什么JVM启动慢?

java - 在 java 中突出显示文本文件的某些部分的解决方案?如何实现一个简单的DSL编辑器?

java - 使用java和sql INSERT查询在MS Access中插入字符串类型变量和日期类型变量

安卓 4.3 : Not focus searchView not show hint

Android 应用程序显示来自 URL 的图像

java - android 一个信号通知返回应用程序的先前状态或页面

java - c3p0 getConnection 在连接数增加时挂起

iphone - 用于 Android、iOS 和 Flash 的 WebSocket 库

android - 使用警报管理器启动服务,但前提是主应用程序未运行