java stream泛型不填写会导致类型擦除

List list = new ArrayList();
list.add("aaa");
list.stream().map(a->a.toString())
.filter(a->a)

如上代码,如果list不加泛型,会导致stream后的每个transform类型都无法识别,全部变成了Object类型,例如filter算子里面,a应该是个String类型。

这种现象产生的深层次的原因是什么,求解释

回答

问题补充:

List<Object> list = new ArrayList();
list.stream().map(a->a.toString())
                .filter(a->a)

List list = new ArrayList();
list.stream().map(a->a.toString())
                .filter(a->a)

的结果不一致。第一段代码,在map之后,其后面的stream元素的类型已经转成String了,
而在下面一段代码里面,所有的stream元素类型都是Object,无论算子如何操作,都无法改变其类型,类型被擦除

以上是java stream泛型不填写会导致类型擦除的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>