2016-04-22 6 views
-1

最近、GoogleのGsonを使用してJSONについて学習しています。私は問題を見つけました。ここでは、コードは次のようになります。javaの匿名サブクラスは何を意味しますか?

Type type = new TypeToken<Collection<Data>>(){}.getType(); 

私は{}は本当にmean.So私はソースコードを読んで内容を理解し、同様に、クラスの説明を取得することはできません。リテラルの新しいタイプを構築します。型パラメータから表現されたクラスを派生させます...クライアントは空のanonymous subclassを作成します。 anonymous subclassは本当に私を混乱させますか?誰もそれを具体的に説明できますか?

+0

は、あなたがトークンまたは一般に匿名クラスについてのタイプについて尋ねている:あなたは後に、それを初期化しようとすると、それはそれはあなたもこれを行うことができます匿名

だ敗北しますか? – Savior

+0

トークン "ハック"のタイプの説明は次のとおりです:http://stackoverflow.com/questions/22271779/is-it-possible-to-use-gson-fromjson-to-get-arraylistarrayliststring – Savior

答えて

2

{}は、匿名クラスの本体です。

あなたが持っているもののための完全な定義はこれです:以来のこと

Type type = 
    new TypeToken<Collection<Data>>() // this is the constructor 
    { 
     // in here you can override methods and add your own if you want 
    } // this ends the declaration of the class. At this point the class is created and initialized 
    .getType(); // This is method of the class and semicolon to end the expression 

注:

class MyTypeToken extends TypeToken<Collection<Data>> { 

} 

TypeToken<Collection<Data>> tcd = new MyTypeToken(); 
Type type = tcd.getType(); 

ではなく、すべてのことを入力する必要が、Javaはあなただけにそれを簡素化することができますクラスは匿名であるため、作成時に初期化する必要があります。

TypeToken<Collection<Data>> tt = new TypeToken<Collection<Data>>(){}; 
Type type = tt.getType(); 
+0

あなたの答えは本当に私を助けます。どうも。 – liaoming

関連する問題