2013-09-23 27 views
6

Aşağıdaki kodda, Type type ne anlama geliyor ve küme parantezleri ne için kullanılıyor? bir işlev çağrısından sonra değil, ama bir yapıcı çağrısından sonraİşlevden sonra küme parantez nedir?

Type type = new TypeToken<List<String>>(){}.getType(); 
List<String> list = converter.fromJson(jsonStringArray, type); 
+0

Tip türü, sınıf Tip bir değişken olarak adlandırılır şekli anlamına –

+0

Arka plan açıklaması: https://sites.google.com/site/gson/ gson-kullanıcı-kılavuzu # TOC-Serileştirme-ve-Serileştirme-Jenerik-Türleri – BalusC

+0

Yazım şekliyle Tür türü belirsiz ise, o zaman sorunuzdaki her şey yolunda ilerliyor –

cevap

4

. hat

Type type = new TypeToken<List<String>>(){}.getType(); 

TypeToken anonim alt sınıfının bir örneğini oluşturmak ve daha sonra getType() yöntemi çağırmaktadır. İki hatlarında aynı yapabilirdi: Java Tutorial Anonymous Subclasses bu daha fazla örnek vardır

TypeToken<List<String>> typeToken = new TypeToken<List<String>>(){}; 
Type type = typeToken.getType(); 

. Bu herhangi bir yöntem geçersiz kıldığından ve örnek başlatma bloğu kullanılmadığından, biraz tuhaf bir kullanımdır. (Örnek başlatma blokları hakkında daha fazla bilgi için bkz. Initializing Fields.)

5

Type bir sınıftır.

new TypeToken<List<String>>() { 
}.getType(); 

Anonim iç sınıf oluşturma ve oluşturulan nesne üzerinde getType() yürütmesini mi.

1

Küme parantezleri anonim sınıf yapıcısıdır ve bir yapıcı çağrısı sonrasında kullanılır. İçeride bir yöntemi geçersiz kılabilir veya oluşturabilirsin.

Örnek:

Çıkış
private static class Foo { 

    public int baz() { 
     return 0; 
    } 
} 

public static void main(final String[] args) { 
    final Foo foo = new Foo() { 
     @Override 
     public int baz() { 
      return 1; 
     } 
    }; 

    System.out.println(foo.baz()); 
} 

:

1 
İlgili konular