Java abstract class function generic type

I created an abstract class for ArrayList owners

 public abstract class ArrayHolder { Gson g = new Gson(); } 

used as

 public class MyHolder extends ArrayHolder { ArrayList<MyType> myList = new ArrayList<MyType>(); } 

I would like to create an abstract function to populate this ArrayList of String and Type argument

like this ( String data is JSON in String ): This function needs to be rewritten

 public ArrayList<T> arrayType(String data, T type){ return g.fromJson(data, new TypeToken<ArrayList<type>(){}.getType()); } 

use it in a subclass

 public void fillData(String data){ myList = arrayType(data, MyType.class); } 

How can I do it right?

thanks

+2
source share
3 answers

Try it...

 public abstract class ArrayHolder { Gson g = new Gson(); public <T> ArrayList<T> arrayType(String data){ return g.fromJson(data, TypeToken.get(new ArrayList<T>().getClass())); } } 

using

 public class MyCollection extends ArrayHolder { private ArrayList<MyType> collection; public void setData(String data){ collection = arrayType(data); } } 
+3
source
 public <T> ArrayList<T> arrayType(String data){ return g.fromJson(data, new TypeToken<ArrayList<T>>(){}.getType()); } 
+2
source

Do it like this:

 public <T> ArrayList<T> arrayType(String data){ return g.fromJson(data, new TypeToken<ArrayList<T>>(){}.getType()); } 

I have not dealt with typical typed methods, but from what I saw, this is correct.

+2
source

All Articles