为什么在方法参数中使用Final

 mobiledu2502886077 发布于 2023-02-07 21:22

当我编写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()方法有像int position,View convertView,ViewGroup parent这样的参数.我的观察是在我开始使用位置变量时onclick(),Eclipse抛出编译错误并要求将位置作为final.我为什么要把它作为最终版?AFAIK final用于常量.

2 个回答
  • final方法参数中使用,以使引用 在传递给方法后不可更改.这是保护传递参数的专门方法.因此,接收方法将无法使用新对象或值重新初始化它

    2023-02-07 21:30 回答
  • 您正在使用position您的匿名内部类.因此,要求该职位是最终的.

    匿名类无法访问其未声明为final有效最终的封闭范围中的局部变量.

    最终修饰符表示此字段的值不能更改.

    http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

    2023-02-07 21:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有