XPath 쿼리를 나타내는 여러 String 객체가 포함 된 문자열 배열 (String[]
)이 있습니다. 이러한 쿼리는 디자인 타임에 미리 결정됩니다. 이 배열은 쿼리를 실행 한 객체에 전달 된 다음 결과가 Map<String, ArrayList<String>>
인 결과를 반환합니다.자바 배열 : 상수가있는 벡터의 요소를 확인하십시오.
지도는 다음과 같이 구성됩니다 나는이 결과를 가지고 다음 그들과 함께 몇 가지 작업을 수행해야하기 때문에
{Query that originated the result, Results vector}
, 나는 개별 쿼리를 알 필요가있다. 예 :
ArrayList<String> firstQueryResults = xpathResults.getObject(modelQueries[0]);
... logic pertaining only to the first query results ...
정수로 결과를 가져 오는 (첫 번째 쿼리의 경우는, "0") 나에게 좋은 것 같지 않기 때문에, 그들을 통해 식별 할 수있는 가능성이있을 것입니다 있는지 궁금 해서요 보다 선명한 열거 같은 상수, :
... = xpathResults.getObject(QueryDictionary.MODEL_PACKAGE);
... = xpathResults.getObject(QueryDictionary.COMPONENT_PACKAGE);
OR
... = xpathResults.getObject(ModelQueries.PACKAGE);
... = xpathResults.getObject(ComponentQueries.PACKAGE);
I (예 : Map<String, String>
Map {ID, Query}
같이)지도를 사용하여 생각하지만, 나는 하드 코딩 된 문자열 (예 : "패키지")를 통해 쿼리를 참조 할 여전히 있습니다. 나는 또한 enums
을 사용하려고 생각했지만 몇 가지 쿼리 세트 (Model, Component, ...)가 있으며 쿼리를 수행하는 객체에 전달하기 위해 양식을 String[]
폼의 모든 쿼리로 가져와야합니다 .
public enum ModelQueries implements QueryType {
...
}
public enum ComponentQueries implements QueryType {
...
}
등 :
public interface QueryType {
}
이 그런 다음 열거 형이 인터페이스를 구현할 수 있습니다
귀하의 전략을 사용하여 쿼리가 단순 문자열에서 쿼리 유형으로 식별되는 방식을 변경할 수 있습니다. 쿼리 식을 유지하기 위해 String 특성을 보유하도록 열거 형을 만들어야합니다. 'public enum ModelQueries가 쿼리를 구현합니다. { PACKAGE ("\\ XPathQuery ..."); 문자열 쿼리. ModelQueries (문자열 쿼리) {this.query = query; } }' –
네, 그렇게하는 방법이 될 것입니다. 모든 구현 enum이 구현할 수 있도록 인터페이스에서 메소드를 지정할 수 있습니다. –
정수 배열 인덱스 또는 문자열 맵 키를 통해 "하드 코딩 된"쿼리 식별을 피하기 위해 이러한 종류의 솔루션이 과도하다고 생각하십니까? 또는 명확성을 위해 가치가 있습니까? –