아래 빌드 메서드는 TypedMemberDTO
의 인스턴스를 만듭니다.원시 형식과 비교 한 메서드의 제네릭 이해
TypedMemberDTO
는 입력 List
Member.getDetails
가 난 단지 런타임에이 개 유형 중 하나가 될 것입니다 알고 Object
유형을 반환 포함 할 수 있습니다. 이러한 유형은 Object
을 확장하는 것 외에는 공통점이 없습니다. 내가 원하는 무엇
은 TypedMemberDTO
에 상세 정보를 설정하는 제네릭을 사용하는 빌드 방법을 만드는 것입니다.
코드는 잘 컴파일하고 나는 <U>
입력이 실제로 나에게 제공 무엇인지에 조금 혼란 스러워요 있지만, 잘 실행됩니다. 내가 대신 <U>
의 여기 원시 유형을 사용하면 현실에서
는, 나는 같은 컴파일 시간 혜택을 얻을 것?
빌드 방법을 작성하는 더 좋은 방법이 있습니까?
public class TypedMemberDTO<T> extends MemberDTO {
private List<T> details;
public List<T> getDetails() {
return details;
}
public void setDetails(List<T> details) {
this.details = details;
}
}
public <U> TypedMemberDTO<?> build(Member member, String attributeName) {
TypedMemberDTO<U> typedMemberDTO = new TypedMemberDTO<U>();
List<U> dtos = (List<U>) member.getDetails(attributeName);
typedMemberDTO.setDetails(dtos);
return typedMemberDTO;
}
은 어떤 유형을 나타낼 수 있습니까? – SamTebbs33
컴파일시 안전성을 전혀 제공하지 않습니다. 이것이 의미하는 바는 비 안전은 코드의 나머지 부분을 스며 들기보다는이 한 가지 방법으로 제한된다는 것입니다. SamTebbs33 @ –
- 난 두 가지 유형 중 하나가 될 수 있습니다 그것은 위에서 언급 한,이 내 코드 – DJ180