You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic中按总处理时间排序生产变体的生产线模拟优化问题

问题解决:AnyLogic中排序后List调用take()编译报错

问题原因

你声明的sortedByTotalTimeAsc是原始类型List,未指定泛型参数(比如List<Variant>,Variant为你的代理类名)。编译器无法推断variantElement的具体类型,而enterKlemmenleiste.take()需要接收你的代理类型对象,因此触发编译错误。

而variants是AnyLogic的Population<Variant>(带泛型的集合),forEach执行时编译器能明确元素类型,所以可正常运行。

解决方案

将排序后的列表声明为带泛型的List,指定对应代理类的类型。

修正后的代码

System.out.println("Varaints:" + variants.toString());
// 返回未排序的代理群体

// 声明带泛型的List,替换Variant为你的实际代理类名
List<Variant> sortedByTotalTimeAsc = sortAscending(variants, v -> v.gesamt);

System.out.println("sortedByTotalTimeAsc:" + sortedByTotalTimeAsc.toString());
// 按预期返回排序后的列表

System.out.println("sortedByTotalTimeAsc item 0 equals Varaints item 10 " + sortedByTotalTimeAsc.get(0).equals(variants.get(10)));
// 返回true(列表和群体包含相同对象)

// 现在可正常执行,无编译错误
sortedByTotalTimeAsc.forEach(variantElement -> {
    enterKlemmenleiste.take(variantElement);
});

// 原代码无报错
variants.forEach(variantElement -> {
    enterKlemmenleiste.take(variantElement);
});

补充说明

  • 务必将代码中的Variant替换为你实际创建的代理类名称(即variants群体对应的代理类型)。
  • AnyLogic的sortAscending方法传入带泛型的Population时,返回的是带泛型的List,但用原始类型List接收会丢失类型信息,导致后续方法调用的类型检查失败。

内容的提问来源于stack exchange,提问作者Mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:59:54