package hprose.example.io; import hprose.io.ByteBufferStream; import hprose.io.HproseClassManager; import hprose.io.HproseReader; import hprose.io.HproseWriter; import hprose.util.StrUtil; import java.io.IOException; import java.lang.reflect.Type; import java.util.HashSet; import java.util.Set; public class GenericExam { interface SetMessage { Message<Set<User>> getMessage(); } public static void main(String[] args) throws IOException, NoSuchMethodException, NoSuchFieldException { HproseClassManager.register(User.class, "User"); HproseClassManager.register(Message.class, "Message"); Type type = SetMessage.class.getMethod("getMessage", new Class[0]).getGenericReturnType(); Message<Set<User>> message = new Message(); Set<User> set = new HashSet(); User user1 = new User(); user1.name = "Tom"; user1.age = 18; set.add(user1); User user2 = new User(); user2.name = "Jerry"; user2.age = 15; set.add(user2); message.setId(1); message.setData(set); ByteBufferStream stream = new ByteBufferStream(); HproseWriter writer = new HproseWriter(stream.getOutputStream()); writer.serialize(message); System.out.println(StrUtil.toString(stream)); stream.flip(); HproseReader reader = new HproseReader(stream.getInputStream()); Message<Set<User>> message2 = (Message<Set<User>>)reader.unserialize(type); System.out.println(message2.getData().getClass()); } }