자바에서는 제네릭의 타입을 알아야 하는 부분이 있다면 제네릭을 쓰지 않는 게 정도인 것 같음. 굳이 해야 한다면 instanceof보다는 따로 Foo<T>를 상속하는 SpecialFoo 클래스를 만들어서 해당 메소드들을 오버라이딩하고 Foo<Special> 대신 SpecialFoo를 생성해서 활용하는 게 조금이나마 더 객체지향적인 방법이지 않을까.. 싶습니다.
Gson에서 쓰는 TypeToken이나 ObjectMapper 에서 쓰는 TypeReference 같은 방식같은건가?
안그래도 이거 따라해보려는데 구현하려는게 restapi 요청별로 param 빌더클래스를 나눠서 클래스 하나로 좀 간단하게 REST 요청 처리 하는거거든. 근데 응답을 list 타입으로 역직렬화 해야하는데 제네릭 클래스 안에 또 제네릭 클래스타입이 들어가는 형태라서 그런가 잘 안되네.
빌더 클래스도 인터페이스나 추상클래스로 추상화 구현도 어케해야할지 잘 감이 안잡히고...
그래서 그냥 빌더들은 요청하고싶은 녀석 각자 호출시키게 하고 응답부분은 제네릭 메소드만 구현시키고 인수로 클래스 자체를 받고 class.isInstance로 타입비교한 다음에 해당 타입이 있으면 그 타입의 list타입으로 역직렬화 쓰는 형식으로 처리함
스비니
자바에서는 제네릭의 타입을 알아야 하는 부분이 있다면 제네릭을 쓰지 않는 게 정도인 것 같음. 굳이 해야 한다면 instanceof보다는 따로 Foo<T>를 상속하는 SpecialFoo 클래스를 만들어서 해당 메소드들을 오버라이딩하고 Foo<Special> 대신 SpecialFoo를 생성해서 활용하는 게 조금이나마 더 객체지향적인 방법이지 않을까.. 싶습니다.
저소음흑축써주세요제발
Gson에서 쓰는 TypeToken이나 ObjectMapper 에서 쓰는 TypeReference 같은 방식같은건가?
안그래도 이거 따라해보려는데 구현하려는게 restapi 요청별로 param 빌더클래스를 나눠서 클래스 하나로 좀 간단하게 REST 요청 처리 하는거거든. 근데 응답을 list 타입으로 역직렬화 해야하는데 제네릭 클래스 안에 또 제네릭 클래스타입이 들어가는 형태라서 그런가 잘 안되네.
빌더 클래스도 인터페이스나 추상클래스로 추상화 구현도 어케해야할지 잘 감이 안잡히고...
그래서 그냥 빌더들은 요청하고싶은 녀석 각자 호출시키게 하고 응답부분은 제네릭 메소드만 구현시키고 인수로 클래스 자체를 받고 class.isInstance로 타입비교한 다음에 해당 타입이 있으면 그 타입의 list타입으로 역직렬화 쓰는 형식으로 처리함