2011-12-05 15 views
1

私はEntityManager.javaを見ていると私は、私はクラスメソッドの定義内<X>型宣言を見たことがない<X>はJavaメソッドの宣言で何を意味しますか?

public <T extends Object> T find(Class<T> type, Object o, LockModeType lmt, Map<String, Object> map); 

を参照してください。これは何を意味するのでしょうか?

public <T extends Object> T find( Tが別のクラスを拡張することを定義しているようです。これで別のオブジェクトを拡張する必要があることを理解していますか?

+1

を参照してください... http://docs.oracle.com/javase/tutorial/java/generics/index.html –

+0

一般的な方法に関する情報は、具体的には次のとおりです。http://docs.oracle.com/javase/tutorial/extra/generics/methods.html –

+0

義務的なAngelika Langerのリンク:http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedMethods。 html – millimoose

答えて

8
public <T extends Number> T find() 

これは、あなたが定義のためにTで示されるタイプのパラメータを持つgeneric機能を定義することを意味します。 TはNumberのサブクラス(extends)でなければなりません。関数は型T

のオブジェクトを返します。そして、あなたはそのような関数を呼び出すことができます。

Double d = find(); 
Integer i = find(); 

いますが、以下は、コンパイル時のエラーです:

String s = find(); //error 

文字列はdoesnのために」 t extends Number。

+0

私は ''のようなJavaのジェネリックについて詳しく説明していますので、 –

関連する問題