将值传递给内部类方法?

时间:2011-07-17 00:19:11

标签: java playframework inner-classes

Promise<List<WrapSpec>> wrapSpecPromise = new Job() {
                @Override
                public List<WrapSpec> doJobWithResult() throws Exception {
                    return PkgLoad.findDistinctWrapSpecBetweenDates(pkgLine, startDate, endDate);               
                }
            }.now();

是否可以将值pkgLine,startDate,endDate传递给此方法?谢谢你的帮助。

编辑:这是建议反对的吗?或不。感谢。

    for ( final PkgLine pkgLine : pkgLineList ) {


            Promise<List<WrapSpec>> distinctWrapPromise = new Job() {

                @Override
                public List<WrapSpec> doJobWithResult() throws Exception {
                    return PkgLoad.findDistinctWrapSpecBetweenDates( pkgLine, startDate, endDate );
                }
            }.now();
            promiseList.add( distinctWrapPromise );
        }

2 个答案:

答案 0 :(得分:5)

是的,如果它们在调用块中声明为final

final PkgLine pkgLine = ...;
final Date startDate = ...;
final Date endDate = ...;

Promise<List<WrapSpec>> wrapSpecPromise =
  new Job() {
    @Override
    public List<WrapSpec> doJobWithResult() throws Exception {
      return
        PkgLoad.findDistinctWrapSpecBetweenDates(
          pkgLine,
          startDate,
          endDate
        );               
    }
  }.now();

答案 1 :(得分:2)

进入doJobWithResult方法,否,除非您要更改Job接口/类。但是,它们可以是在封闭方法或类中定义的变量,并以这种方式使用。如果是局部变量,它们必须是最终用于匿名内部类,如Alexander的答案所示。