public abstract interface HibernateCallback
{
  public abstract Object doInHibernate(Session paramSession)
    throws HibernateException, SQLException;
}         public List find(String queryString, Object[] values) throws DataAccessException {
/*  742 */     return ((List)execute(new HibernateCallback(queryString, values) { private final String val$queryString;
/*      */       private final Object[] val$values;
/*      */ 
/*      */       public Object doInHibernate(Session session) throws HibernateException { Query queryObject = session.createQuery(this.val$queryString);
/*  745 */         HibernateTemplate.this.prepareQuery(queryObject);
/*  746 */         if (this.val$values != null) {
/*  747 */           for (int i = 0; i < this.val$values.length; ++i) {
/*  748 */             queryObject.setParameter(i, this.val$values[i]);
/*      */           }
/*      */         }
/*  751 */         return queryObject.list();
/*      */       }
/*      */     }
/*      */     , true));
/*      */   }
val$values ,val$queryString 什么意思?。为什么不用queryString,values 来直接接受参数

解决方案 »

  1.   

    补充一个问题
     HibernateTemplate.this.prepareQuery
    this什么意思啊。
      

  2.   

    为什么不用queryString,values 来直接接受参数 
    我觉得这里是因为使用了内部类,而内部类只能访问final修饰的变量,
    因此在这里将queryString,values先赋给final的变量val$values ,val$queryString
    再在方法中接收参数
      

  3.   

    HibernateTemplate.this.prepareQuery this.的作用是什么呢?。
      

  4.   

    这应该是 Spring 的源代码吧,val$values 和 val$queryString 也没看到在什么地方被赋过值?你这段代码是从 Spring 的 src 中贴过来的么?回复后面一个问题吧:HibernateTemplate.this.prepareQuery 这种用法一般是在内部类中使用的,表示调用的是 HibernateTemplate 中的 prepareQuery 方法。这样也可以区分,如果在内部类中含有一个同名的 prepareQuery 方法时,可以确定具体调用的是哪一个类中的 prepareQuery 方法。
      

  5.   

    Java核心技术思想中在讲内部类的时候貌似看到过这个DD LZ这个类是内部类么? 他在引用他OUTER CLASS的某个属性吧 也许大概吧..
      

  6.   

    这是一种编码规范,,,,this在这里也没什么具体的意义。可要可不要。。就像你在一个类中用this.方法()一样的。
      

  7.   

    public abstract interface HibernateCallback
    {
      public abstract Object doInHibernate(Session paramSession)
        throws HibernateException, SQLException;
    }
    有这种写法吗,抽象接口!