29

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?

azizbekian
  • 53,978
  • 11
  • 145
  • 225
Android
  • 462
  • 1
  • 5
  • 12

1 Answers1

44

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.

Tony Danilov
  • 390
  • 2
  • 9
  • 22
azizbekian
  • 53,978
  • 11
  • 145
  • 225