정확한 유형을 지정하지 않고 TDictionary를 반환하는 함수를 구현해야합니다.Delphi에서 제네릭을 사용하는 것이 안전합니까?
function GetMap: TDictionary;
다음 반환 값 캐스트 :
type
TMyMapType: TDictionary<string,Integer>;
var
MyMap: TMyMapType:
begin
...
MyMap := GetMap as TMyMapType;
...
end;
편집 : 반환 값은,이 TDictionary<string,Integer>
, TDictionary<string,string>
또는 TDictionary<string,Boolean>
난 결과 매개 변수로 TDictionary으로 함수를 선언 할 수있을 수 발견 내 세 가지 사전 형식과 호환 될 수있는 '일반'결과 매개 변수 형식을 선언 할 방법이없는 것으로 보입니다. 내가 오브젝트 파스칼 언어에없는
type
TMyMapType: TDictionary<string, ?>;
(아직?) 수와 같은 뭔가가 필요 같은
는 것 같습니다.
static Map<String, Integer>getIntegerMap() {
Map<String, Integer> result = new TreeMap<String, Integer>() {};
result.put("foo", Integer.valueOf(42));
return result;
}
static Map<String, ?> getMap() {
return getIntegerMap();
}
public static void main(String[] args) {
System.out.println(getMap().get("foo"));
}
이 응답을 읽은 후 고맙습니다. http://www.ibm.com/developerworks/java/library/j-jtp04298.html ('캡처 도우미'를 사용하여 가능한 해결책을 보여줍니다.) 문제점을 이해합니다.내 단순한 경우 반환 형식에만 필요하기 때문에 기본 래퍼 개체가있는 TDictionary가 해결 방법이 될 수 있습니다. –
mjn