小编Bud*_*dzu的帖子

如何用Java中的参数构造TestFSMRef对象?

我是Akka框架的新手,所以仍然试图解决问题.实际上,我正在使用TestFSMRef类编写一些测试来测试我的有限状态机actor,称为​​'UptimeMonitorActor'.以下是代码:

@Test
public void testUptimeMonitorActorInInitializingBothPendingState() {
  String systemSMCId = "systemSMC";
  String systemStateModeTopic = "sysStateMode";
  String dataStorageId = "dataStorage";
  String dataSetId = "1";

  Props props = Props.create(UptimeMonitorActor.class, systemSMCId, systemStateModeTopic, dataStorageId, dataSetId);
  TestFSMRef fsm = new TestFSMRef<UptimeMonitorState, UptimeMonitorContext, UptimeMonitorActor>(system, props, some_supervisor, "FSM", null);
  fsm.start();
  log.info(fsm.stateName().toString());
}
Run Code Online (Sandbox Code Playgroud)

我得到了fsm.stateName().toString()的NullPointerException,因为我不知道我要传递给'ev'是什么,这是构造函数中的最后一个参数.参数的类型是:

private final Predef..less.colon.less<T, FSM<S, D>> ev;
Run Code Online (Sandbox Code Playgroud)

我认为这是某种评价.在这种情况下,我应该创建什么来传递'ev'?

谢谢.

java scala state-machine akka scalatest

5
推荐指数
0
解决办法
157
查看次数

lambda表达式中的返回类型错误:谓词<T>无法转换为Criteria <T>

我有以下接口和类:

public interface Rule<T> {
   Predicate<T> evaluate();
}

public interface Criteria<T> {
   Predicate<T> evaluate();
}

public abstract class AbstractRule<T> implements Rule<T> {
   ...
   Set<Criteria<T>> criteria;
   ...

   @Override 
   @Nullable 
   public Predicate<T> evaluate() {
      return criteria.stream().reduce((c1, c2) -> c1.evaluate().and(c2.evaluvate()))
             .orElse(null);
   }
}
Run Code Online (Sandbox Code Playgroud)

AbstractRule类包含一组Criteria.我想通过评估每个标准来对规则进行评估.我在标题中提到的c1.evaluate().和(c2.evaluate())上遇到了编译错误.

我该如何解决这个问题?

谢谢.

java java-8 java-stream

2
推荐指数
1
解决办法
1500
查看次数

标签 统计

java ×2

akka ×1

java-8 ×1

java-stream ×1

scala ×1

scalatest ×1

state-machine ×1