php小编西瓜带来的java问答专栏,本期探讨intellij java中映射流的通用类型推断。在开发过程中,合理利用通用类型推断能够提高代码编写效率,减少冗余代码。通过本文的讨论和示例,读者可以更好地理解和应用intellij java中的映射流,进一步提升编程技能。
想象一下下面的类:
public class test { private static list<model<?>> getmodels() { return list.of(10).stream() .map(test::getmodel) .tolist(); } private static model<?> getmodel(int key) { return new model<>(key); } public static void main(string... str) { system.out.println("hello world!" + getmodels()); } public static class model<t> { private t field; model(t key) { field = key; } public string tostring() { return "model(" + field + ")"; } } }
我很好奇为什么 intellij 在映射阶段后无法推断流的类型,并显示错误?
当我如下所示在地图阶段显式添加类型时,它工作正常。
public class test { private static list<model<?>> getmodels() { return list.of(10).stream() .<model<?>>map(test::getmodel) .tolist(); } private static model<?> getmodel(int key) { return new model<>(key); } public static void main(string... str) { system.out.println("hello world!" + getmodels()); } public static class model<t> { private t field; model(t key) { field = key; } public string tostring() { return "model(" + field + ")"; } } }
为什么intellij显示错误,但是编译却没有任何错误?当我将鼠标悬停在它上面时,会显示此错误:
立即学习“Java免费学习笔记(深入)”;
Required type: List<Model<?>> Provided: List<? extends Model<?>>
intellij 编译器错误地推断了 map 方法的更通用的返回类型(stream extends model>>,而它应该是 stream
return List.of(10).stream() .<Model<?>>map(Test::getModel) .toList();
以上就是IntelliJ Java 映射流的通用类型推断的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号