2013-07-29 2 views
-1

안녕하세요 스위치의 I는 "argToken"값을 변환하고 여기에자바 스위치 케이스 리턴 형

@Override 
public <RERURN_TYPE...???> convert(Object argToken, Object argFieldToken) { 
    Object obj = Precondition.ensureNotNull(argToken, "Input Object"); 
    Field field = (Field) Precondition 
      .ensureNotNull(argFieldToken, "Field"); 

    Type type = Type.valueOf(field.getType().getName()); 
    switch (type) { 
    case BYTE: 
     break; 
    case SHORT: 
     break; 
    case INTEGER: 
     return Integer.parseInt(argToken.toString()); 
     break; 
    case LONG: 
     break; 
    case FLOAT: 
     break; 
    case DOUBLE: 
     break; 
    case CHARACTER: 
     break; 
    case BOOLEAN: 
     break; 
    case STRING: 
     break; 
    case BIGINT: 
     break; 

    default: 
     break; 
    } 
    return null; 
} 

같은 경우 필드의 유형에 따라 달라집니다 있습니다. 마지막으로 반환 값은 해당 필드 유형에 따라 변경됩니다. 그렇다면 모든 반환 유형을 허용하는 반환 유형을 어떻게 유지할 수 있습니까?

누구든지 설명해 주실 수 있습니까?

if(argToken instanceof Integer) { 
    return (int) argToken; 
} else if(/* some other types */) { 
    //cast and return the other types 
} else { 
    return null; 
} 

그러나 이것은 단지 리턴 타입 Object와 함께 작동합니다 : 당신이 그런 훨씬 쉽게 스위치 부분을 설계 할 수 아마르

+4

그런 일은 할 수 없습니다. 반환 유형은'Object' 여야합니다. –

+0

"모든 반환 유형을 허용하는 반환 유형을 유지합니다."내가 원하는 것을 얻는다면 불가능합니다. – Uselesssss

답변

1

... 하십시오 ... 여기

을 통해 붙어 . 유일한 대안은 각 기본 유형에 대한 메소드를 작성하는 것입니다.

따라서 실제 해결책은 없습니다.