2013-04-20 9 views
8

で戻り値の型にキーワードを拡張し、私は、メソッドのシグネチャの多くは、このいずれかに似ているが見つかりました:は私が<a href="http://commons.apache.org/proper/commons-chain">commons-chain</a></p> <p>のコードを通過されたJavaのメソッドシグネチャ

この署名は何が違うのですどのように

public <CMD extends Command<K, V, C>> CMD getCommand(String commandID)

唯一の論理的な理由

public Command getCommand(String commandID)

I:からタイプチェックをすることが理解できました。しかし、私はまだ設計の観点からそれを行う理由を理解することができませんでした。

は、をJavaメソッドの戻り型に拡張する理由がいくつかありますか?

答えて

4

差は、三倍である。

  1. 返さタイプ(ない生型)を入力され
  2. 方法は、タイプへのアクセス権を持つ特定のサブクラスであり得る戻さタイプK、V及びC

そして型付き方法であり、Javaの型を推論することができる

コンパイラは、変数の型に基づいて(すなわち把握)メソッドのタイプを推測します

Command<String, Integer, String> x = getCommand(commandID); 

または

SomeTypedSubClassOfCommand x = getCommand(commandID); 

:このすべてが、これは(キャストなし)をコンパイルすることを意味します

結果はに割り当てられています。

Command<String, Integer, String> x = ContainingClass.<CommandSubClass<String, Integer, String>>getCommand(commandID); 
+0

感謝:

さらに、明示的にこの構文を使用してサブクラスを指定することができます。私が探していた明確化だけ。 – shoubhik

関連する問題