2026/4/18 14:30:54
网站建设
项目流程
麦当劳订餐网站 是谁做的,网站建设课程小结,什么软件是做网站模板的,HTML转换WordPress文件Java 泛型中的 T、E、K、V、#xff1f;到底啥意思#xff1f;
——2025 年了#xff0c;还在懵#xff1f;看完这张表直接秒懂#xff0c;再也不被面试官吊打
符号官方/社区约定含义最常见出现场景真实项目里谁在用#xff08;2025 年真实案例#xff09;能不能随便换…Java 泛型中的 T、E、K、V、到底啥意思——2025 年了还在懵看完这张表直接秒懂再也不被面试官吊打符号官方/社区约定含义最常见出现场景真实项目里谁在用2025 年真实案例能不能随便换TType任意类型类泛型定义最通用写法class CacheTpublic T T get(String key)99% 的自定义泛型类/方法EElement集合元素 集合框架专用ListE、SetE、Map.EntryK,VJDK 源码、所有集合类只能用于集合相关换了会被打KKey键 Map 的 keyMapK,V、CacheK,V所有 Map、缓存、配置中心只能表示 key换了就乱套VValue值 Map 的 valueMapK,V、ResultV所有返回值、缓存 value同上?Unknown未知类型 通配符表示“任意类型”List?、Comparator? super T工具类、兼容老代码、泛型擦除场景不能在定义泛型时用只能用在“使用”时NNumber数字 数字相关ListN extends Number数字工具类很少用RReturn Type返回值类型 函数式编程常用R R map(FunctionT,R mapper)Stream、Optional、CompletableFuture越来越流行S、U第二、第三个类型参数 多泛型参数时用S,U BiFunctionT,S,U函数式接口、复杂工具类很少见2025 年真实项目写法排行大厂规范排名写法示例谁在用为什么这么写1public class ResultT所有中大型项目返回包装类T 代表任意业务数据2public interface RepositoryT, IDSpring Data JPA 规范T实体ID主键类型3MapString, Object99% 的项目虽然不规范懒得定义 VO4PageResultListT所有分页接口外层是包装内层是具体类型5T T getBean(ClassT clazz)Spring 工具类返回值类型由调用方决定6List? extends User协变只能读不能加PECS 原则7List? super Admin逆变只能写不能读生产者用 extends消费者用 super面试官最爱问的 5 个灵魂问题 标准答案问题标准答案背下来T 和 ? 的区别T 是类型占位符必须在定义时声明? 是通配符使用时才出现表示未知类型不能加元素只能 get为什么 Map 用 K,V 而不是 T因为有明确语义Key 和 Value阅读性强IDE 提示更友好List? extends Animal能 add(null) 吗能 add(null)但不能 add 任何 Animal 子类因为编译器不知道具体类型Comparator? super T是什么意思比较器可以接受 T 或 T 的父类用于逆变经典例子Collections.sort()为什么 Spring 用 里不写类型泛型推导Diamond OperatorJDK7 特性编译器自动推断2025 年最正确的写法直接抄作业// 推荐语义清晰publicclassCacheK,V{...}publicclassResultTprocess(Tinput){...}publicRPageResultRquery(PageQueryquery,ClassRclazz){...}// 不推荐虽然能跑但会被架构师打publicclassCacheT,V{...}// K 改成 T别闹publicTTdoSomething(){...}// 随便用 T阅读者一脸懵List?listnewArrayList();// 完全不知道里面是什么终极结论2025 年面试/写代码必背“T Type万能E Element集合专属K V Key ValueMap 专属? 不知道但肯定是某种类型通配符记住这句口诀“定义用 T集合 EMap 永远 K 和 V读多写少 extends写多读少 super啥也不知道问号 ?”你现在项目里有没有把 Map 写成 MapT, V 的敢不敢贴出来让我帮你改成 K,V顺便升个级来