美文网首页每天一个秃头小技巧
【Java】带有泛型的方法指定泛型类型

【Java】带有泛型的方法指定泛型类型

作者: littlefogcat | 来源:发表于2022-02-08 21:07 被阅读0次

一般来说遇不到这种情况,但是还是记录一下。一般形式如下:

        Observable.<String>create()
        // ...

也就是调用方法前的句点 . 之后紧跟泛型类型。这既可以是静态方法,也可以是对象方法,形式都相同。如果调用的是当前对象内的方法,需要在前面加上 this。如:

    public void foo() {
        View view = this.<View>findViewById(0);
    }

    public <T> T findViewById(int id) {}

这个情况是在使用 RxJava 的时候遇到的。当使用 Observable.create 方法创建一个对象时,后续无法获取到这个泛型,且无法利用强制转换。

Observable.create(emitter -> {
    emitter.onNext("");
})
.map(s -> {
    return s.length(); // × 这里无法自动判断对象的类型
})

需要改为:

Observable.<String>create(emitter -> {
    emitter.onNext("");
})
.map(s -> {
    return s.length(); // √
})

相关文章

网友评论

    本文标题:【Java】带有泛型的方法指定泛型类型

    本文链接:https://www.haomeiwen.com/subject/hlcikrtx.html