2016-07-29 107 views
1

我想了解一個使用lambda將對象返回到接口的引用變量的java程序。我想將lambda轉換爲簡單的java函數,但不知道如何去做。將lambda轉換爲函數/方法

的程序如下: -

public class AgentLicenseLazyModel extends CoreDataModel<AgentLicenseModel> { 

    public AgentLicenseLazyModel(final List<AgentLicenseModel> entities) { 
     super(AgentLicenseModel.class, entities, (sortField, sortOrder) -> { 
      return new AgentLicenseLazySorter(sortField, sortOrder); 
     }); 
    } 
} 

這裏是抽象類:

public abstract class CoreDataModel<T extends AbstractEntityModel> extends LazyDataModel<T> { 

private final Class<T> entityClass; 
private final List<T> entities; 
private final CoreDataSorterProducer<T> coreDataSorterProducer; 

public CoreDataModel(final Class<T> entityClass, final List<T> entities, final CoreDataSorterProducer<T> coreDataSorterProducer) { 
    this.entityClass = entityClass; 
    this.entities = entities; 
    this.coreDataSorterProducer = coreDataSorterProducer; 

    if (entities != null) { 
     setRowCount(entities.size()); 
    } 
} 

如何這個程序轉換成簡單的Java程序不使用拉姆達的學習。請幫忙。

編輯: 這裏是CoreDataSorterProducer:

@FunctionalInterface 
public interface CoreDataSorterProducer<T extends AbstractEntityModel> { 

    CoreDataSorter<T> produce(String sortField, SortOrder sortOrder); 
} 
+2

向我們展示'CoreDataSorterProducer'類源 – Andrew

+0

我加了CoreDataSorterProducer ..謝謝 –

回答

7

lambda表達式的主體是CoreDataSorterProducer<AgentLicenseModel>接口的一個抽象方法的實施。

您可以使用實現CoreDataSorterProducer<AgentLicenseModel>的匿名類實例替換lambda表達式。

public class AgentLicenseLazyModel extends CoreDataModel<AgentLicenseModel> { 
    public AgentLicenseLazyModel(final List<AgentLicenseModel> entities) { 
     super(AgentLicenseModel.class, entities, new CoreDataSorterProducer<AgentLicenseModel>() { 

      public AgentLicenseLazySorter theMethodName (TheTypeOfSortField sortField, TheTypeOfSortOrder sortOrder) 
      { 
       return new AgentLicenseLazySorter(sortField, sortOrder); 
      } 
     }); 
    } 
} 

注意theMethodNameTheTypeOfSortFieldTheTypeOfSortOrder應由CoreDataSorterProducer接口的方法名稱和類型它的參數來代替。

+0

嗨,這非常有幫助。謝謝 –