2012-03-23 68 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)