Advertisement
Guest User

Untitled

a guest
Nov 3rd, 2015
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. public class Value<T> {
  2.  
  3. private T value;
  4.  
  5. public Value(T ponylevel) {
  6. this.value = ponylevel;
  7. }
  8.  
  9. public T get() {
  10. return value;
  11. }
  12.  
  13. public void set(T val) {
  14. this.value = val;
  15. }
  16.  
  17. public static class TypeFactory implements TypeAdapterFactory {
  18.  
  19. @SuppressWarnings({ "rawtypes", "unchecked" })
  20. @Override
  21. public <T> TypeAdapter<T> create(final Gson gson, TypeToken<T> typeToken) {
  22. final Type type = typeToken.getType();
  23. System.out.println(type);
  24. if (!(typeToken.getRawType().isAssignableFrom(Value.class))) {
  25. return null;
  26. }
  27. System.out.println(type);
  28.  
  29. Type componentType = ((ParameterizedType)type).getActualTypeArguments()[0];
  30. TypeAdapter<?> componentTypeAdapter = gson.getAdapter(TypeToken.get(componentType));
  31.  
  32. return new TypeTypeAdapter(componentTypeAdapter);
  33. }
  34.  
  35. }
  36.  
  37. private static class TypeTypeAdapter<T> extends TypeAdapter<Value<T>> {
  38.  
  39. private TypeAdapter<T> adapter;
  40.  
  41. public TypeTypeAdapter(TypeAdapter<T> adapter) {
  42. this.adapter = adapter;
  43. }
  44.  
  45. @Override
  46. public void write(JsonWriter out, Value<T> value) throws IOException {
  47. adapter.write(out, value.get());
  48. }
  49.  
  50. @Override
  51. public Value<T> read(JsonReader in) throws IOException {
  52. return new Value<T>(adapter.read(in));
  53. }
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement