Kev*_*tos 1 java lambda java-8
我试图理解java中的一个程序,它使用lambda将对象返回到接口的引用变量中.我想将lambda转换为简单的java函数,但不知道该怎么做.
该计划如下: -
public class AgentLicenseLazyModel extends CoreDataModel<AgentLicenseModel> {
public AgentLicenseLazyModel(final List<AgentLicenseModel> entities) {
super(AgentLicenseModel.class, entities, (sortField, sortOrder) -> {
return new AgentLicenseLazySorter(sortField, sortOrder);
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是抽象类:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
如何在不使用lambda进行学习的情况下将此程序转换为简单的java程序.请帮忙.
编辑:这是CoreDataSorterProducer:
@FunctionalInterface
public interface CoreDataSorterProducer<T extends AbstractEntityModel> {
CoreDataSorter<T> produce(String sortField, SortOrder sortOrder);
}
Run Code Online (Sandbox Code Playgroud)
lambda表达式的主体是CoreDataSorterProducer<AgentLicenseModel>接口的单个抽象方法的实现.
您可以使用实现的匿名类实例替换lambda表达式CoreDataSorterProducer<AgentLicenseModel>.
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);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
需要注意的是theMethodName,TheTypeOfSortField并TheTypeOfSortOrder应由方法名称替换CoreDataSorterProducer接口的种类与它的参数.
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |