定义高级

Posted on 2020-06-24 16:07  用户注册了一次  阅读(114)  评论(0编辑  收藏  举报

Java 存在类型擦除机制.

故运行时难以确定泛型参数(我当然知道可以确定只是成本高).

有各种魔法方式尝试从List<A>中取出一个obj并防御式的判断下 obj instanceof A.

这是我很不喜欢的一个特性,我看不出好处在哪里.

然后读了一些文章.他们发明了一些词汇 List<Integer> 转List<Number>叫协变(起这个名字有什么依据吗).

List<*>叫 星投影(看着好像List<?>).

虽然这样也是,怎么说吧,还可以吧.(以上两个是kotlin)

但是它没有解决我的问题啊.

我的问题是我的一个定义无法在语法上严格限定类型,而需要使用.getClass这种技巧.

协变对我有帮助吗,星投影对我有帮助吗.

 

好多特性的确是在创造更多的名,求得个别场景下貌似的进步.

这些名代价太大了,然后我们管这东西叫高级用法.

 

我是支持Stream的,因为它是个通用概念,Java中的Stream和其他语言的Stream是一样的.

然而我从来不会使用<?>

它太贵了 还是<T>好用