2017-04-05 113 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