2013-04-05 55 views
1

對於這種方法,<T>部分是什麼意思作爲此方法的返回類型的一部分?我在哪裏指定.class文件?它甚至是返回類型定義的一部分嗎?它的用途是什麼?它是否定義了第二個參數Class<T> requiredType使用的類類型,還是不用於參數定義?尖括號意味着什麼作爲返回類型的一部分? <T> T

public <T> T queryForObject(String sql, Class<T> requiredType, Map<String, ?> args) throws DataAccessException { 
    return getNamedParameterJdbcOperations().queryForObject(sql, args, requiredType); 
} 
+3

http://docs.oracle.com/javase/tutorial/java/generics/index.html – iamnotmaynard 2013-04-05 14:53:27

+0

http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html – 2013-04-05 14:53:46

+3

@AaronKurtzhals I不同意。問題的錐體是與第二個T相關的意思。和T之間的關係是什麼? – 2013-04-05 14:55:28

回答

5
public <T> T queryForObject(String sql, Class<T> requiredType, Map<String, ?> args) throws DataAccessException { 
  1. <T> --->是不是你在聲明方法級別泛型類型,讓您可以在方法內部使用此類型T返回類型。
  2. Ť---->是方法
+0

所以,讓我把這個權利作爲方法簽名的一部分,你可以聲明一個新的泛型類型,它不僅可以用作返回類型,但可以作爲該方法的參數?或者,'Class '參數除了在方法簽名中聲明的泛型類型外,還聲明瞭一個新的泛型類型?感謝您的回答,PermGenError! – 2013-04-05 15:01:54

+1

'public'後的''聲明瞭類型參數。 '類'只是使用之前聲明的這個參數。該參數是一種用'requiredType'來表示傳入的類的方法,該方法的返回類型將與該類型相同。 – mikej 2013-04-05 15:12:49

1

<T>只是限定一個通用型T然後可以用你的方法簽名被稱爲的返回類型。沒有它,你的代碼將無法編譯。

相關問題