Browse Source

使用@SafeVarargs+final优化泛型数组可能带来堆污染警告,动态参数的api还是挺香的

VampireAchao 3 years ago
parent
commit
a60a8021be

+ 4 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractLambdaWrapper.java

@@ -42,14 +42,14 @@ public abstract class AbstractLambdaWrapper<T, Children extends AbstractLambdaWr
     private Map<String, ColumnCache> columnMap = null;
     private boolean initColumnMap = false;
 
-    @SuppressWarnings("unchecked")
     @Override
-    protected String columnsToString(SFunction<T, ?>... columns) {
+    @SafeVarargs
+    protected final String columnsToString(SFunction<T, ?>... columns) {
         return columnsToString(true, columns);
     }
 
-    @SuppressWarnings("unchecked")
-    protected String columnsToString(boolean onlyColumn, SFunction<T, ?>... columns) {
+    @SafeVarargs
+    protected final String columnsToString(boolean onlyColumn, SFunction<T, ?>... columns) {
         return Arrays.stream(columns).map(i -> columnToString(i, onlyColumn)).collect(joining(StringPool.COMMA));
     }
 

+ 3 - 5
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -331,7 +331,6 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
             () -> String.format("(%s)", inValue)));
     }
 
-    @Deprecated
     @Override
     public Children groupBy(boolean condition, R column, R... columns) {
         return maybeDo(condition, () -> {
@@ -344,9 +343,9 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
         });
     }
 
-    @Deprecated
     @Override
-    public Children orderBy(boolean condition, boolean isAsc, R column, R... columns) {
+    @SafeVarargs
+    public final Children orderBy(boolean condition, boolean isAsc, R column, R... columns) {
         return maybeDo(condition, () -> {
             final SqlKeyword mode = isAsc ? ASC : DESC;
             appendSqlSegments(ORDER_BY, columnToSqlSegment(columnSqlInjectFilter(column)), mode);
@@ -646,9 +645,8 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
     }
 
     /**
-     * 不推荐使用, JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution)
+     * 获取 columnNames
      */
-    @Deprecated
     protected String columnsToString(R... columns) {
         return Arrays.stream(columns).map(this::columnToString).collect(joining(StringPool.COMMA));
     }

+ 0 - 11
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/interfaces/Func.java

@@ -285,16 +285,13 @@ public interface Func<Children, R> extends Serializable {
         return groupBy(true, columns);
     }
 
-    @Deprecated
     default Children groupBy(R column, R... columns) {
         return groupBy(true, column, columns);
     }
 
     /**
      * 分组:GROUP BY 字段, ...
-     * 不推荐使用, JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution)
      */
-    @Deprecated
     Children groupBy(boolean condition, R column, R... columns);
 
     /**
@@ -329,16 +326,13 @@ public interface Func<Children, R> extends Serializable {
         return orderByAsc(true, columns);
     }
 
-    @Deprecated
     default Children orderByAsc(R column, R... columns) {
         return orderByAsc(true, column, columns);
     }
 
     /**
      * 排序:ORDER BY 字段, ... ASC
-     * 不推荐使用, JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution)
      */
-    @Deprecated
     default Children orderByAsc(boolean condition, R column, R... columns) {
         return orderBy(condition, true, column, columns);
     }
@@ -375,16 +369,13 @@ public interface Func<Children, R> extends Serializable {
         return orderByDesc(true, columns);
     }
 
-    @Deprecated
     default Children orderByDesc(R column, R... columns) {
         return orderByDesc(true, column, columns);
     }
 
     /**
      * 排序:ORDER BY 字段, ... DESC
-     * 不推荐使用, JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution)
      */
-    @Deprecated
     default Children orderByDesc(boolean condition, R column, R... columns) {
         return orderBy(condition, false, column, columns);
     }
@@ -413,9 +404,7 @@ public interface Func<Children, R> extends Serializable {
 
     /**
      * 排序:ORDER BY 字段, ...
-     * 不推荐使用, JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution)
      */
-    @Deprecated
     Children orderBy(boolean condition, boolean isAsc, R column, R... columns);
 
     /**

+ 0 - 2
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/conditions/AbstractChainWrapper.java

@@ -224,7 +224,6 @@ public abstract class AbstractChainWrapper<T, R, Children extends AbstractChainW
         return typedThis;
     }
 
-    @Deprecated
     @Override
     public Children groupBy(boolean condition, R column, R... columns) {
         getWrapper().groupBy(condition, column, columns);
@@ -243,7 +242,6 @@ public abstract class AbstractChainWrapper<T, R, Children extends AbstractChainW
         return typedThis;
     }
 
-    @Deprecated
     @Override
     public Children orderBy(boolean condition, boolean isAsc, R column, R... columns) {
         getWrapper().orderBy(condition, isAsc, column, columns);