2012-05-25 3 views
0

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 { 
} 

이 그런 다음 열거 형이 인터페이스를 구현할 수 있습니다

답변

1

당신은 마커 인터페이스를 사용할 수 있습니다.

getObject 메서드는 QueryType 매개 변수를 사용할 수 있습니다. 이런 식으로 당신이 찾고 있었습니까? 질문을 제대로 이해하지 못했다면 알려주십시오.

+0

귀하의 전략을 사용하여 쿼리가 단순 문자열에서 쿼리 유형으로 식별되는 방식을 변경할 수 있습니다. 쿼리 식을 유지하기 위해 String 특성을 보유하도록 열거 형을 만들어야합니다. 'public enum ModelQueries가 쿼리를 구현합니다. { PACKAGE ("\\ XPathQuery ..."); 문자열 쿼리. ModelQueries (문자열 쿼리) {this.query = query; } }' –

+0

네, 그렇게하는 방법이 될 것입니다. 모든 구현 enum이 구현할 수 있도록 인터페이스에서 메소드를 지정할 수 있습니다. –

+0

정수 배열 인덱스 또는 문자열 맵 키를 통해 "하드 코딩 된"쿼리 식별을 피하기 위해 이러한 종류의 솔루션이 과도하다고 생각하십니까? 또는 명확성을 위해 가치가 있습니까? –

관련 문제