日期:2014-05-20  浏览次数:20677 次

内部类与final
对一个方法的引用类型参数进行修改,但该操作是在该方法的一个内部类方法中修改的,而内部类中要求变量要用final修饰,但final修饰的变量又不能改变其值,求高手帮助

------解决方案--------------------
谁说的内部类里面的变量要用 final 修饰?
------解决方案--------------------
此变量如果是类实例的应用你可以直接用其get和set方法改变即可。
------解决方案--------------------
Java code

    //注意用final修改过了。
    public void updateObject(final CompletionAcceptance obj) {
        
        try {
            this.getHibernateTemplate().execute(
                new HibernateCallback(){
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        String hql = new String("delete CompletionAcceptance where caId in(:ids)");
                        Query query = session.createQuery(hql);
                        query.setParameter("ids", obj.getCaId());
                        return query.executeUpdate();
                    }
                }
            );
        } catch ( org.springframework.dao.DataAccessException e) {
            throw new DataAccessException(e.getMessage(),e);
        }
        //你的问题是不能修改obj中的值吗?
        //final只是限制了引用不可修改也就是说不能再有如下代码
        obj = new CompletionAcceptance();
        //但你可以这样
        obj.setCaId("new Id");
        
    }