2012-03-23 4 views
0

Я работаю с Google GSON, и в документации они mention они следующие:В Java, что делает object.class?

Object Examples 

class BagOfPrimitives { 
    private int value1 = 1; 
    private String value2 = "abc"; 
    private transient int value3 = 3; 
    BagOfPrimitives() { 
    // no-args constructor 
    } 
} 

(Сериализация)

BagOfPrimitives obj = new BagOfPrimitives(); 
Gson gson = new Gson(); 
String json = gson.toJson(obj); 
==> json is {"value1":1,"value2":"abc"} 

Обратите внимание, что вы не можете сериализовать объекты с циклическими ссылками с момента, что приведет к бесконечной рекурсии.

(десериализации)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class); 
==> obj2 is just like obj 

В самом низу, они используют BagOfPrimitives.class. Что это точно? (Я бы предположил, что он может вернуть класс, но в этом случае я ожидаю, что код просто опустит «.class»).

ответ

4

Это класс литерал - он дает ссылку на объект , представляющий конкретный класс. См. section 15.8.2 of the JLS для более подробной информации. Например:

String text = "Hello"; 
Class<?> classFromObject = text.getClass(); 
Class<?> classFromLiteral = String.class; 
System.out.println(classFromObject == classFromLiteral); // true 

В случае десериализации, это сказать десериализатор, какой тип использовать, чтобы попытаться десериализации данные, как.

0

Вы помещаете тип в метод, поэтому вам не нужно его бросать. Метод fromJson является общим и разрешает сам тип в соответствии с типом, который вы там пишете ...

<T> T fromJson(String json, Class<T> classOfT) 
Смежные вопросы