2017-09-23 4 views
0

Lorsque j'utilise la bibliothèque Gson, je trouve classe dérivée classe normale et anonyme a conduit à une sortie différente en utilisant gson.toJson() .Ici est le code (Il suffit de démontrer, ignorer la grammaire):Différence entre la classe anonyme et la classe dérivée normale face à Gson?

La classe dérivée:

class StringWrap { 
    private String str = "qwerty"; 
} 

Object derived = new StringWrap(); 

La classe anonyme:

Object anonymous = new Object(){ 
     private String str="qwerty"; 
    }; 

En fait, new Gson().toJson(derived) retour {"str":"qwerty"}, mais new Gson().toJson(anonymous) retoursdix .

Y a-t-il quelque chose de différent entre la classe anonyme et la classe dérivée? Ou est-ce quelque chose concernant Gson?

Répondre

0

Gson ne prend pas en charge les classes anonymes. J'ai trouvé dans le guide de l'utilisateur gson: https://sites.google.com/site/gson/gson-user-guide

Les champs correspondant aux classes externes dans les classes internes, des classes anonymes, et les classes locales sont ignorées et non inclus dans sérialisation ou désérialisation

+0

Alors, pourquoi sont des classes anonymes uniques? – obfish

+0

@obfish Les classes anonymes sont des expressions où les classes locales sont des déclarations. Les classes anonymes vous permettent de déclarer et d'instancier une classe en même temps. Ils sont aussi sans nom. – Moe