2011-07-17 236 views
1
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); 
     } 
+0

声明final也有另一种方式像在下面链路 [传递参数,而不使用最终] [1] [1]:http://stackoverflow.com/a/12206542/1168603 – 2013-04-08 09:19:09

回答

5

是的,如果它们在调用块

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(); 
+0

谢谢。我确实记得一会儿回来读。我对我的帖子进行了修改。这是有道理的吗? –

+0

@德鲁。是的,这是有道理的。 –

2

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