I have the following method in my project
public void execute(final int apiId, final ResponseHandler handler, final Type type)
and the type is determined using TypeToken as follows
final Type serviceErrorType = new TypeToken<>() {
}.getType();
I went through this link here but couldn't understand completely about Type
and TypeToken
Can anyone please share a link or help understand these two concepts?
From the link you provided:
Forces clients to create a subclass of this class which enables retrieval the type information even at runtime.
Let's speak with example.
Assume you want to parse a JSON to Java class with Gson library. Now, you have to specifically tell Gson, that:
I want this JSON to be translated to a List of User objects
How would you tell that to Gson? If it was only User
, you could tell User.class
. But it isn't possible to say List<User>.class
new Gson().fromJson(json, new TypeToken<List<User>>(){}.getType())
But now you can specify precisely that Gson should convert it to a List of Users
.
Should quote explanation from docs:
Represents a generic type
T
. Java doesn't yet provide a way to represent generic types, so this class does.
Have a look at this blog post for more details on the topic.