2017-04-05 64 views
-4

我正在閱讀項目中的一些代碼片段,並且發現了一些帶有此簽名的函數。有人可以向我解釋什麼是返回類型代表的部分?這個語法指的是什麼?

private <T extends SessionRequest> void continueSession(T request, Action action) 
+0

是有約束的通用方法.... –

+0

的T是通配符https://en.wikipedia.org/wiki/Wildcard_(Java) –

+0

'T'必須是從'SessionRequest'擴展的類型才能被接受爲方法的參數。 – px06

回答

2

即與約束的泛型方法.... 想象以下

private void continueSession(T request){} 

那麼你的人可以這樣做:

continueSession("Hi"); 

continueSession(1000); 

所以你需要能夠在編譯時間限制的是考慮作爲參數的方法....

現在,如果你做

private <T extends Number> void continueSession(T request){} 

然後試圖調用

continueSession("Hi"); 

會因爲字符串不是子類Number所以回答你的問題:

private <T extends SessionRequest> void continueSession(T request, Action action) 

是僅允許是

  • 子類的SessionRequest
  • 任一對象實現了該接口SessionRequest