美文网首页每天一个秃头小技巧
【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