ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
在 Java 里,`new QueryWrapper<>()` 里的 `<>` 之所以“空”,是因为编译器已经能从**左侧的变量声明**里推断出泛型实参,于是允许你省略不写。 这行代码: ```java QueryWrapper<RentBill> queryWrapper = new QueryWrapper<>(); ``` 等价于 ```java QueryWrapper<RentBill> queryWrapper = new QueryWrapper<RentBill>(); ``` `<>` 的正式名称是 **diamond operator**(菱形语法),从 Java 7 开始引入。它的作用就是“让编译器帮你填泛型实参”,避免重复书写已经显而易见的类型信息。 只要**赋值目标类型**(左侧)已经明确,右侧就可以用 `<>` 简写;如果左侧是裸类型或推断不出,就不能省。例如: ```java // 可以 QueryWrapper<RentBill> qw = new QueryWrapper<>(); // 不行,编译器无法推断 QueryWrapper qw = new QueryWrapper(); // 警告:使用了原始类型 ``` 总结:`<>` 空着不是“没写泛型”,而是“编译器已经知道,我省略了”。在 Java 里,`new QueryWrapper<>()` 里的 `<>` 之所以“空”,是因为编译器已经能从**左侧的变量声明**里推断出泛型实参,于是允许你省略不写。 这行代码: ```java QueryWrapper<RentBill> queryWrapper = new QueryWrapper<>(); ``` 等价于 ```java QueryWrapper<RentBill> queryWrapper = new QueryWrapper<RentBill>(); ``` `<>` 的正式名称是 **diamond operator**(菱形语法),从 Java 7 开始引入。它的作用就是“让编译器帮你填泛型实参”,避免重复书写已经显而易见的类型信息。 只要**赋值目标类型**(左侧)已经明确,右侧就可以用 `<>` 简写;如果左侧是裸类型或推断不出,就不能省。例如: ```java // 可以 QueryWrapper<RentBill> qw = new QueryWrapper<>(); // 不行,编译器无法推断 QueryWrapper qw = new QueryWrapper(); // 警告:使用了原始类型 ``` 总结:`<>` 空着不是“没写泛型”,而是“编译器已经知道,我省略了”。