제네릭 (IParameter)의 목록 (IParameterCollection)이 있습니다.이 목록은 뭔가의 매개 변수가되어야합니다. 이 제네릭에는 실제 매개 변수의 유형을 포함하는 "유형"이 있습니다.제네릭 목록의 반환 값
enum Type {
TEST1(Integer.class),
TEST2(Double.class);
Class<?> _clazz;
private Type(Class<?> clazz) {
_clazz = clazz;
}
public Class<?> getClazz() {
return _clazz;
}
}
interface IParameterCollection {
IParameter<?> getParameter(Type type);
}
interface IParameter<T> {
public Type getID();
public T getValue();
}
IParameterCollection#getParameter(Type.TEST1).getValue()
를 호출하고 하나에 캐스팅없이 정수 유형의 객체를받을 어떻게 든 수 있습니까?
원하는 작업 :
매개 변수가 포함 된 효과가 있습니다. getParameterCollection을 호출하고 IParameterCollection을 받기 원하는 매개 변수를 변경하려는 경우.
IParameterCollection parameters = effect.getParameterCollection();
가 지금은 그래서 내가 그 방법으로 제공 유형에 따라 특정 매개 변수
// should return the parameter with the generic type defined in the Type
IParameter<Integer> parameter = parameters.getParameter(Type.TEST1);
// should return Integer and not any unknown type
parameter.getValue();
에 대한 해당 모음을 요청하십시오 returntype의 변경한다. 당신이 캐스팅 것을 방지 할 일은하려는 모든, 당신이 할 수 있다면
이것은 정말로 분명하지 않습니다. 너는 정확히 무엇을하고 싶니? 구현 방법을 보여줄 수 있습니까? – Happy
[Type Safe Heterogenous Containers의 키 제한] (http://stackoverflow.com/questions/21414076/limiting-keys-in-type-safe-heterogenous-containers)의 가능한 복제본. 또한 관련 : [자바 enum 리터럴은 제네릭 형식 매개 변수를 가질 수없는 이유는 무엇입니까?] (http://stackoverflow.com/questions/4290878/why-shouldnt-java-enum-literals-beable-to-have -generic-type-parameters) 및 [Java enums and generics] (http://stackoverflow.com/questions/5108733/java-enums-and-generics)를 참조하십시오. –
폴 감사합니다, 내가 무엇을 찾고 있었는지. http://stackoverflow.com/questions/21414076/limiting-keys-in-type-safe-heterogenous-containers – andre