결론 : 메서드의 파라미터로 받는다.
T가 있는데 굳이 파라미터로 새로 받으려면 좀 갑갑하지만… 괜히 두번하는것같아서 하기싫지만 현재 이 방법이 가장 좋은것 같다.
토끼 메세지큐 사용중..
//콜백인터페이스 public interface MQCallback<T extends HealthyMonkey> { Class<T> getThis(); T onMessageReceived(T message); } //수신인터페이스 public interface MQReceiver<T extends HealthyMonkey> { T receive(MQCallback<T> callback) throws IOException; } //송신인터페이스 public interface MQSender<T extends HealthyMonkey>{ void send(T domain) throws IOException; void send(List<T> domains) throws IOException; }
위 구조로 만들었는데…. 메세지 프로토콜을 json형태로 정했는데…
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
위에놈을 가지고 jsonString을 domain으로 만들려고 하니 문제가 생기는거다.
T t = (T)JSONObject.toBean(jsonObject, T.class);
를 쓰고싶은데 안되니까… 그래서 콜백에 메서드를 한개 추가해줬다. getThis() 위의 소스코드는 밑의 메서드가 포함되어있다.
T t = (T)JSONObject.toBean(jsonObject, callback.getThis());
그럼 제네릭될때 처리된다.
까먹을까봐…. 그리고 아무나 참고하시라고 써놓는다
제목에 영어와 한글을 섞는건 검색하기 쉬우라고