-1
그리고 미국)이 방법으로 값을 사용합니다 :.. (Events.valueOf (EventsList.get (0)))에 (States.valueOf (EventsList.get (0)) 트랜스 그것은 (자바 루프 알고리즘
에을
...
하지만 어떤 패턴이 반복되는지는 확실하지 않습니다.
정말 고맙게 생각합니다.
는 /////////// 당신이이 //////////////////////////// 업데이트] 감사 @Dukeling 조언
public Map<States, List<Events>> transitMap;
public Map<Events, States> toMap;
void transitCaller(States initialState, Events events)
{
transitCallerHelper(on(events).to(initialState),
transitMap.get(initialState));
}
Transition transitCallerHelper(Transition toResult, List<Events> events)
{
List<Transition> transitCalls = new ArrayList<Transition>();
for (Events e: events)
{
States s = toMap.get(e);
if (isFinishEvent(e)) // or isFinishState(s)
transitCalls.add(on(e).finish(s));
else
{
events = (s != null ? transitMap.get(s) : null);
if (events == null)
transitCalls.add(on(e).to(s));
else
transitCalls.add(transitCallerHelper(on(e).to(s), events));
}
}
return toResult.transit(transitCalls.get(0));
}
당신의 소중한 답변을 주셔서 감사합니다, 미안 해요. "from"은 "on"과 finish의 두 가지 유형이 있습니다. 둘 다 "Transaction"입니다. 재귀 적 메소드를 사용해야하므로 아무 것도 실패하지 않습니다. ?. 이 코드는 https://pastebin.com/fewi8R0F (데모)에서 https://github.com/Beh01der/EasyFlow를 신청하십시오. 감사. 수정했는데 작동하지 않습니다. 수정 된/확장 된 질문을 참조하십시오. – user1069571
제발 위의 의견을 참조하십시오, 감사합니다 – user1069571
@ user1069571하지만 그것은 또한'교통 수단을 가지고? 이 경우 두 메소드 모두에서 구현 한'interface' 메소드에 그 메소드를 넣을 수 있습니다. 재귀 적 메소드에서'returnType' 대신이 인터페이스를 사용할 수 있습니다. 왜냐하면 재귀 적 메소드가 'transit' 메소드를 갖는 것이 유일한 방법이기 때문입니다. 또는'transitCallerHelper' 메소드의 대부분을'List'를 반환하는 다른 메소드 ('getTransitArgs')로 옮긴 다음'from (initialState) .transit (getTransitArgs (transitMap.get (initialState)))를 실행합니다. ;에서'transitCaller'. –
Dukeling