最近在研究 Rxjava 中发现使用了这样的写法。
public abstract class AsyncJob<T> {
    public <R>AsyncJob<R> map(Func<T,R> func){
        
    }
    
}
对于 <R>AsyncJob<R> 这种写法感到陌生,问了一圈同事都说不清楚。
一开始以为是泛型相关,然而没有查到相关介绍。
最后在这篇博客看到 [ java 中返回任意类型值]
大概知道了这是一种 [返回任意类型] 的语法,有人熟悉并知道正确的叫法吗?
|      1ex1gtnim7d OP 没见过的可以顶一下,看下有多少人跟我一样⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ | 
|      2Cbdy      2018-07-20 11:45:00 +08:00 via Android Java 泛型了解一下 | 
|      3PhxNirvana      2018-07-20 11:46:34 +08:00 这不就是泛型么。。。 | 
|      4oracle128g      2018-07-20 11:51:04 +08:00 via iPhone  1 方法返回值前面的泛型代表是方法自定义的类型,跟类上的泛型无关。大概意思就是不使用类上定义的泛型。不对的有请楼下补充 | 
|  |      5qiyuey      2018-07-20 11:53:25 +08:00 这就是个泛型。。。 | 
|  |      6zhouyou457      2018-07-20 11:56:53 +08:00 public static <T> T getBean(Class<T> clazz) { return getApplicationContext().getBean(clazz); } 泛型这种写法太常见了... | 
|      7SmallZheng      2018-07-20 12:00:58 +08:00 via Android 就是泛型呀,AsyncJob<R> 是返回值 | 
|  |      8lhx2008      2018-07-20 12:02:57 +08:00 via Android 可能是没有空格? R 是从输入参数捕捉的 | 
|      9ex1gtnim7d OP @oracle128g 就是说最前面的<R>可以看作是一种声明吗 | 
|  |      10cuzfinal      2018-07-20 12:10:19 +08:00  2 你是没看过 C++的模板。 | 
|      11feiyuanqiu      2018-07-20 12:13:49 +08:00 via Android | 
|  |      12coffeSlider      2018-07-20 12:16:52 +08:00 via Android  1 这也太水了吧 | 
|      13kansimeng      2018-07-20 12:24:36 +08:00  1 基础都没打还研究什么 Rxjava? | 
|  |      14theohateonion      2018-07-20 12:29:16 +08:00 .....我一个前端都知道这是泛型 | 
|  |      15easylee      2018-07-20 12:30:59 +08:00 via Android 我也觉着是泛型,如果不是的话,请 at 我回来看看。 | 
|      16ex1gtnim7d OP @kansimeng 现在研究不行? | 
|      17ex1gtnim7d OP @feiyuanqiu thanks | 
|  |      18metrxqin      2018-07-20 12:32:59 +08:00 你们也是医药专业转 Java 的吗? | 
|  |      19Athrob      2018-07-20 12:42:14 +08:00 ``` public abstract class AsyncJob<T> { public AsyncJob<R> map<R>(Func<T,R> func) { } } ``` 这样我就能看懂了, 我是 C# | 
|  |      20FunnyCodingXu      2018-07-20 12:42:41 +08:00 最基础的泛型。。。好好看书学基础吧 | 
|  |      21Athrob      2018-07-20 12:43:12 +08:00 回复不支持`markdown`吗 | 
|  |      22hsuan      2018-07-20 12:45:40 +08:00 泛型方法,楼主应该再好好学学 java。 | 
|  |      23sagaxu      2018-07-20 12:48:59 +08:00 via Android 这都不熟,是 php 转 java 的吗? | 
|  |      24Lonely      2018-07-20 13:03:27 +08:00 via iPhone 人才………………………………………… | 
|  |      25deadEgg      2018-07-20 13:06:35 +08:00 public <R>  ArrayList<R>  map(R func){} 这样写楼主是不是就是秒懂了。 | 
|  |      26xhinliang      2018-07-20 13:09:01 +08:00 这就是泛型啊 | 
|  |      27KuroNekoFan      2018-07-20 13:16:39 +08:00 via iPhone generic type 啊 | 
|      28gam2046      2018-07-20 13:31:17 +08:00  2 public <R> R get(R a) 把 R 随便替换成一个已经类型,你是不是就看得懂了,比如说 String public String get(String a) public 后面紧跟的<R>只是申明了一个泛型的名称而已,语法需要,并没有实际意义。 | 
|  |      29xiaojunjor      2018-07-20 13:33:33 +08:00 ??? 骗金币的??? 我不写 java 多看得懂。。 | 
|      30notreami      2018-07-20 13:38:40 +08:00 Rxjava 里,我最恶心的是那堆 Func1、Func2、Func3、Func4 | 
|  |      32pexcn      2018-07-20 13:53:51 +08:00 这算是比较常见的吧... | 
|  |      33seaswalker      2018-07-20 14:03:38 +08:00 方法级别的泛型吧 | 
|  |      34rockyou12      2018-07-20 14:33:53 +08:00 @notreami java 语言就这样,做任意泛型参数数量也只能这样了,反正用 lambda 就可以当他们不存在了…… 用了 kotlin 更爽,这种 lambda 都不需要写个 interface 来定义了 | 
|      35ex1gtnim7d OP @gam2046 一直看得懂,换成 public R get(R a)我更看得懂,我只是不明白为什么要在 R 前面多加一个<R>,就是过来问问这是什么语法...,因为现在网上随便搜个 Java 泛型的介绍文章一般都只讲类上的泛型和参数上的泛型,有哪篇讲到这种情况的 | 
|      36gam2046      2018-07-20 14:49:28 +08:00  4 语法需要呀。告诉编译器 R 是一个泛型参数。 public R get(R a) 直接这样写,R 在上下文中没有定义,就是语法错误了。天知道 R 是什么东西?在 public 后面加上<R>就是告诉编译器,后面的那个 R 是个泛型( object 类型)。讲到这个,真的是,Java 这个基于类型擦除的假泛型,有时候用起来是真的糟心。 扩展一下 public <I,O> O get(I input) <I,O>就是申明了这个方法里有两个泛型参数,I 和 O public <A,B,C,D,E> get(B input) 那就是有 A/B/C/D/E 五个泛型参数。 | 
|      37ex1gtnim7d OP @gam2046 万分感谢! | 
|      38don2012      2018-07-20 16:46:45 +08:00 via Android 基础不行啊楼主 | 
|  |      39kaedea      2018-07-20 18:06:37 +08:00 via Android 实例泛型方法,比较能理解,因为涉及到继承,还需要考虑到协变和异变的问题... | 
|  |      40kaedea      2018-07-20 18:07:32 +08:00 via Android 把类型参数换成 Object,然后用个静态泛型方法保护一下比较好 | 
|      41choice4      2018-07-22 20:16:24 +08:00 但是实例方法的话 不必声明持有泛型吧 似乎静态才需要声明为返回方法 或者说标记持有此泛型 | 
|  |      42Trumeet      2018-07-25 20:17:08 +08:00 via Android 泛型了解一下? |