Jessp 파서 클래스를 사용하여 파일을 열고 내부에 deftemplates 및 deffacts를 가져 오는 응용 프로그램에 methond를 구현하고 있습니다. 문제는 결과를 객체 변수로 가져 오려고 할 때 생성자에서 JessTokenStream을 묻는 것입니다. 저는 JessToken을 전달하려고 시도했으나 유형에 대해 e8이되어야한다고 불평합니다. Jess 문서를 검색했지만 인수에 대한 설명을 찾지 못했지만 생성자의 구문 만 발견했습니다. 누구든지 도와 드릴까요? . 미리 감사드립니다 !!!parseDeftemplate. JessTokenStream을 제공 할 수 없습니다.
답변
JessTokenStream 클래스는 public이 아니므로 실제로는 parseXXX()
메서드를 호출 할 수 없습니다. 그것들은 역사적인 이유로 공개되었지만 실제로는 클라이언트가 사용할 수 없습니다. 실제로 공용 인터페이스에서 제거해야합니다.
대신 두 개의 인수 형식 인 parseExpression()
을 사용하고 반환 된 개체를 테스트하여 유형을 확인하십시오. 그런 다음 반환 된 객체로 원하는 것을 할 수 있습니다.
Rete engine = ...
Jesp jesp = ...
Object o = jesp.parseExpression(engine.getGlobalContext(), false);
if (o instanceof Deffacts) {
Deffacts d = (Deffacts) o;
for (int i = 0; i<d.getNFacts(); ++i) {
Fact f = d.getFact(i);
Deftemplate t = f.getDeftemplate();
System.out.println("Fact name is " + f.getName();
System.out.println("Fact name is " + f.getName();
for (String name: t.getSlotNames())
System.out.println("Slot " + name + " contains " + f.getSlotValue(name));
}
}
답변 해 주셔서 감사합니다. 나는 parseExpression()을 사용했으며 파일에서 deftemplate과 deffacts 부분을 정확하게 식별하지만 객체의 내용에 액세스 할 수있는 방법이 있습니까? parseDeftemplate을 사용하여 작업하려고 시도했던 것은 파일에서 deftemplate을 식별하고 잡는 것이 었으며 deffacts에서도 마찬가지였습니다. – creator4983
Deftemplate은 공용 클래스입니다. 반환 된 객체를 Deftemplate으로 캐스팅 한 다음 해당 API를 사용합니다. –
나는 parseExpression의 반환 된 개체를 사용하여 작동 시키려고했지만 지금까지는 결과가 없습니다. 그것은 정확하게 타입을 식별하지만, 객체의 내용을 가져 오려고 할 때 나는 할 수 없습니다. – creator4983
'jess.Jesp'를 의미합니까? 그리고 현재 Jess API에는'JessTokenStream' 클래스가 포함되어 있지 않습니다. 지금까지 가지고있는 코드는 무엇입니까? 어떤 문서를 검색했는지, API/javadoc에는 모든 매개 변수에 대한 설명이 포함되어 있습니다. 아마도 Jess 버전을 요청해야 할 것입니다. 공공 Deftemplate parseDeftemplate (컨텍스트 컨텍스트, RETE 엔진, jess.JessTokenStream의 JTS) 이 JessException – laune
는 @laune 음, 내가 제스의 문서에있어 유일한 기준은이 apiis (71p2). 왜 내가 여기에 회신을 게시 할 때 라인 피드에 대해 수익을 사용할 수 없습니까? 저장 코멘트로 바로갑니다. 그것이 이전 게시물이 약간 이상하게 보이는 이유입니다. 가독성을 위해 코드를 들여 쓰는 방식으로 사이트를 통해 검색하려고합니다. 미리 감사드립니다! – creator4983
@laune 내가 마지막 제스 버전을 사용하고 예외 : – creator4983