2012-03-23 70 views
0

我与谷歌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

这是一个类字面值 - 它给出了表示特定类的Class对象的引用。有关更多详细信息,请参阅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)