mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add util
This commit is contained in:
parent
155dce6f3a
commit
3a105e0334
@ -20,6 +20,8 @@
|
||||
* 【http 】 HttpRequest支持307、308状态码识别(issue#1504@Github)
|
||||
* 【core 】 CharUtil.isBlankChar增加\u0000判断(pr#1505@Github)
|
||||
* 【extra 】 添加Houbb Pinyin支持(pr#1506@Github)
|
||||
* 【core 】 添加LambdaUtil(pr#295@Gitee)
|
||||
* 【core 】 添加StrPool和CharPool
|
||||
|
||||
### Bug修复
|
||||
* 【core 】 修复Validator.isUrl()传空返回true(issue#I3ETTY@Gitee)
|
||||
|
@ -21,6 +21,7 @@ import cn.hutool.core.util.ReflectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.TypeUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.AbstractCollection;
|
||||
import java.util.ArrayList;
|
||||
@ -2916,7 +2917,7 @@ public class CollUtil {
|
||||
* @author Looly
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface Consumer<T> {
|
||||
public interface Consumer<T> extends Serializable {
|
||||
/**
|
||||
* 接受并处理一个参数
|
||||
*
|
||||
@ -2934,7 +2935,7 @@ public class CollUtil {
|
||||
* @author Looly
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface KVConsumer<K, V> {
|
||||
public interface KVConsumer<K, V> extends Serializable{
|
||||
/**
|
||||
* 接受并处理一对参数
|
||||
*
|
||||
|
@ -1,11 +1,13 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 函数对象<br>
|
||||
* 接口灵感来自于<a href="http://actframework.org/">ActFramework</a><br>
|
||||
* 一个函数接口代表一个一个函数,用于包装一个函数为对象<br>
|
||||
* 在JDK8之前,Java的函数并不能作为参数传递,也不能作为返回值存在,此接口用于将一个函数包装成为一个对象,从而传递对象
|
||||
*
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
* @param <P> 参数类型
|
||||
@ -13,10 +15,10 @@ package cn.hutool.core.lang.func;
|
||||
* @since 3.1.0
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface Func<P, R> {
|
||||
public interface Func<P, R> extends Serializable {
|
||||
/**
|
||||
* 执行函数
|
||||
*
|
||||
*
|
||||
* @param parameters 参数列表
|
||||
* @return 函数执行结果
|
||||
* @throws Exception 自定义异常
|
||||
|
@ -1,21 +1,23 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 无参数的函数对象<br>
|
||||
* 接口灵感来自于<a href="http://actframework.org/">ActFramework</a><br>
|
||||
* 一个函数接口代表一个一个函数,用于包装一个函数为对象<br>
|
||||
* 在JDK8之前,Java的函数并不能作为参数传递,也不能作为返回值存在,此接口用于将一个函数包装成为一个对象,从而传递对象
|
||||
*
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
* @param <R> 返回值类型
|
||||
* @since 4.5.2
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface Func0<R> {
|
||||
public interface Func0<R> extends Serializable {
|
||||
/**
|
||||
* 执行函数
|
||||
*
|
||||
*
|
||||
* @return 函数执行结果
|
||||
* @throws Exception 自定义异常
|
||||
*/
|
||||
|
@ -1,11 +1,13 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 只有一个参数的函数对象<br>
|
||||
* 接口灵感来自于<a href="http://actframework.org/">ActFramework</a><br>
|
||||
* 一个函数接口代表一个一个函数,用于包装一个函数为对象<br>
|
||||
* 在JDK8之前,Java的函数并不能作为参数传递,也不能作为返回值存在,此接口用于将一个函数包装成为一个对象,从而传递对象
|
||||
*
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
* @param <P> 参数类型
|
||||
@ -13,11 +15,11 @@ package cn.hutool.core.lang.func;
|
||||
* @since 4.2.2
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface Func1<P, R> {
|
||||
|
||||
public interface Func1<P, R> extends Serializable {
|
||||
|
||||
/**
|
||||
* 执行函数
|
||||
*
|
||||
*
|
||||
* @param parameter 参数
|
||||
* @return 函数执行结果
|
||||
* @throws Exception 自定义异常
|
||||
|
@ -0,0 +1,52 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import cn.hutool.core.lang.SimpleCache;
|
||||
import cn.hutool.core.util.ReflectUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.invoke.SerializedLambda;
|
||||
|
||||
/**
|
||||
* Lambda相关工具类
|
||||
*
|
||||
* @author looly, Scen
|
||||
* @since 5.6.3
|
||||
*/
|
||||
public class LambdaUtil {
|
||||
|
||||
private static final SimpleCache<String, SerializedLambda> cache = new SimpleCache<>();
|
||||
|
||||
/**
|
||||
* 解析lambda表达式,加了缓存。
|
||||
* 该缓存可能会在任意不定的时间被清除
|
||||
*
|
||||
* @param <T> Lambda类型
|
||||
* @param func 需要解析的 lambda 对象(无参方法)
|
||||
* @return 返回解析后的结果
|
||||
*/
|
||||
public static <T> SerializedLambda resolve(Func1<T, ?> func) {
|
||||
return _resolve(func);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取lambda表达式函数(方法)名称
|
||||
*
|
||||
* @param <T> Lambda类型
|
||||
* @param func 函数(无参方法)
|
||||
* @return 函数名称
|
||||
*/
|
||||
public static <T> String getMethodName(Func1<T, ?> func) {
|
||||
return resolve(func).getImplMethodName();
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析lambda表达式,加了缓存。
|
||||
* 该缓存可能会在任意不定的时间被清除
|
||||
*
|
||||
* @param func 需要解析的 lambda 对象
|
||||
* @return 返回解析后的结果
|
||||
*/
|
||||
private static <T> SerializedLambda _resolve(Serializable func) {
|
||||
return cache.get(func.getClass().getName(), () -> ReflectUtil.invoke(func, "writeReplace"));
|
||||
}
|
||||
}
|
@ -1,22 +1,24 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 函数对象<br>
|
||||
* 接口灵感来自于<a href="http://actframework.org/">ActFramework</a><br>
|
||||
* 一个函数接口代表一个一个函数,用于包装一个函数为对象<br>
|
||||
* 在JDK8之前,Java的函数并不能作为参数传递,也不能作为返回值存在,此接口用于将一个函数包装成为一个对象,从而传递对象
|
||||
*
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
* @param <P> 参数类型
|
||||
* @since 3.1.0
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface VoidFunc<P> {
|
||||
|
||||
public interface VoidFunc<P> extends Serializable {
|
||||
|
||||
/**
|
||||
* 执行函数
|
||||
*
|
||||
*
|
||||
* @param parameters 参数列表
|
||||
* @throws Exception 自定义异常
|
||||
*/
|
||||
|
@ -1,21 +1,23 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 函数对象<br>
|
||||
* 接口灵感来自于<a href="http://actframework.org/">ActFramework</a><br>
|
||||
* 一个函数接口代表一个一个函数,用于包装一个函数为对象<br>
|
||||
* 在JDK8之前,Java的函数并不能作为参数传递,也不能作为返回值存在,此接口用于将一个函数包装成为一个对象,从而传递对象
|
||||
*
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
* @since 3.2.3
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface VoidFunc0 {
|
||||
public interface VoidFunc0 extends Serializable {
|
||||
|
||||
/**
|
||||
* 执行函数
|
||||
*
|
||||
*
|
||||
* @throws Exception 自定义异常
|
||||
*/
|
||||
void call() throws Exception;
|
||||
|
@ -1,21 +1,23 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 函数对象<br>
|
||||
* 接口灵感来自于<a href="http://actframework.org/">ActFramework</a><br>
|
||||
* 一个函数接口代表一个一个函数,用于包装一个函数为对象<br>
|
||||
* 在JDK8之前,Java的函数并不能作为参数传递,也不能作为返回值存在,此接口用于将一个函数包装成为一个对象,从而传递对象
|
||||
*
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
* @since 3.2.3
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface VoidFunc1<P> {
|
||||
|
||||
public interface VoidFunc1<P> extends Serializable {
|
||||
|
||||
/**
|
||||
* 执行函数
|
||||
*
|
||||
*
|
||||
* @param parameter 参数
|
||||
* @throws Exception 自定义异常
|
||||
*/
|
||||
|
86
hutool-core/src/main/java/cn/hutool/core/text/CharPool.java
Normal file
86
hutool-core/src/main/java/cn/hutool/core/text/CharPool.java
Normal file
@ -0,0 +1,86 @@
|
||||
package cn.hutool.core.text;
|
||||
|
||||
/**
|
||||
* 常用字符常量
|
||||
*
|
||||
* @author looly
|
||||
* @since 5.6.3
|
||||
*/
|
||||
public interface CharPool {
|
||||
/**
|
||||
* 字符常量:空格符 {@code ' '}
|
||||
*/
|
||||
char SPACE = ' ';
|
||||
/**
|
||||
* 字符常量:制表符 {@code '\t'}
|
||||
*/
|
||||
char TAB = ' ';
|
||||
/**
|
||||
* 字符常量:点 {@code '.'}
|
||||
*/
|
||||
char DOT = '.';
|
||||
/**
|
||||
* 字符常量:斜杠 {@code '/'}
|
||||
*/
|
||||
char SLASH = '/';
|
||||
/**
|
||||
* 字符常量:反斜杠 {@code '\\'}
|
||||
*/
|
||||
char BACKSLASH = '\\';
|
||||
/**
|
||||
* 字符常量:回车符 {@code '\r'}
|
||||
*/
|
||||
char CR = '\r';
|
||||
/**
|
||||
* 字符常量:换行符 {@code '\n'}
|
||||
*/
|
||||
char LF = '\n';
|
||||
/**
|
||||
* 字符常量:减号(连接符) {@code '-'}
|
||||
*/
|
||||
char DASHED = '-';
|
||||
/**
|
||||
* 字符常量:下划线 {@code '_'}
|
||||
*/
|
||||
char UNDERLINE = '_';
|
||||
/**
|
||||
* 字符常量:逗号 {@code ','}
|
||||
*/
|
||||
char COMMA = ',';
|
||||
/**
|
||||
* 字符常量:花括号(左) <code>'{'</code>
|
||||
*/
|
||||
char DELIM_START = '{';
|
||||
/**
|
||||
* 字符常量:花括号(右) <code>'}'</code>
|
||||
*/
|
||||
char DELIM_END = '}';
|
||||
/**
|
||||
* 字符常量:中括号(左) {@code '['}
|
||||
*/
|
||||
char BRACKET_START = '[';
|
||||
/**
|
||||
* 字符常量:中括号(右) {@code ']'}
|
||||
*/
|
||||
char BRACKET_END = ']';
|
||||
/**
|
||||
* 字符常量:双引号 {@code '"'}
|
||||
*/
|
||||
char DOUBLE_QUOTES = '"';
|
||||
/**
|
||||
* 字符常量:单引号 {@code '\''}
|
||||
*/
|
||||
char SINGLE_QUOTE = '\'';
|
||||
/**
|
||||
* 字符常量:与 {@code '&'}
|
||||
*/
|
||||
char AMP = '&';
|
||||
/**
|
||||
* 字符常量:冒号 {@code ':'}
|
||||
*/
|
||||
char COLON = ':';
|
||||
/**
|
||||
* 字符常量:艾特 {@code '@'}
|
||||
*/
|
||||
char AT = '@';
|
||||
}
|
211
hutool-core/src/main/java/cn/hutool/core/text/StrPool.java
Normal file
211
hutool-core/src/main/java/cn/hutool/core/text/StrPool.java
Normal file
@ -0,0 +1,211 @@
|
||||
package cn.hutool.core.text;
|
||||
|
||||
import cn.hutool.core.util.XmlUtil;
|
||||
|
||||
/**
|
||||
* 常用字符串常量定义
|
||||
*
|
||||
* @author looly
|
||||
* @since 5.6.3
|
||||
*/
|
||||
public interface StrPool {
|
||||
|
||||
/**
|
||||
* 字符常量:空格符 {@code ' '}
|
||||
*/
|
||||
char C_SPACE = CharPool.SPACE;
|
||||
|
||||
/**
|
||||
* 字符常量:制表符 {@code '\t'}
|
||||
*/
|
||||
char C_TAB = CharPool.TAB;
|
||||
|
||||
/**
|
||||
* 字符常量:点 {@code '.'}
|
||||
*/
|
||||
char C_DOT = CharPool.DOT;
|
||||
|
||||
/**
|
||||
* 字符常量:斜杠 {@code '/'}
|
||||
*/
|
||||
char C_SLASH = CharPool.SLASH;
|
||||
|
||||
/**
|
||||
* 字符常量:反斜杠 {@code '\\'}
|
||||
*/
|
||||
char C_BACKSLASH = CharPool.BACKSLASH;
|
||||
|
||||
/**
|
||||
* 字符常量:回车符 {@code '\r'}
|
||||
*/
|
||||
char C_CR = CharPool.CR;
|
||||
|
||||
/**
|
||||
* 字符常量:换行符 {@code '\n'}
|
||||
*/
|
||||
char C_LF = CharPool.LF;
|
||||
|
||||
/**
|
||||
* 字符常量:下划线 {@code '_'}
|
||||
*/
|
||||
char C_UNDERLINE = CharPool.UNDERLINE;
|
||||
|
||||
/**
|
||||
* 字符常量:逗号 {@code ','}
|
||||
*/
|
||||
char C_COMMA = CharPool.COMMA;
|
||||
|
||||
/**
|
||||
* 字符常量:花括号(左) <code>'{'</code>
|
||||
*/
|
||||
char C_DELIM_START = CharPool.DELIM_START;
|
||||
|
||||
/**
|
||||
* 字符常量:花括号(右) <code>'}'</code>
|
||||
*/
|
||||
char C_DELIM_END = CharPool.DELIM_END;
|
||||
|
||||
/**
|
||||
* 字符常量:中括号(左) {@code '['}
|
||||
*/
|
||||
char C_BRACKET_START = CharPool.BRACKET_START;
|
||||
|
||||
/**
|
||||
* 字符常量:中括号(右) {@code ']'}
|
||||
*/
|
||||
char C_BRACKET_END = CharPool.BRACKET_END;
|
||||
|
||||
/**
|
||||
* 字符常量:冒号 {@code ':'}
|
||||
*/
|
||||
char C_COLON = CharPool.COLON;
|
||||
|
||||
/**
|
||||
* 字符常量:艾特 {@code '@'}
|
||||
*/
|
||||
char C_AT = CharPool.AT;
|
||||
|
||||
/**
|
||||
* 字符串常量:制表符 {@code "\t"}
|
||||
*/
|
||||
String TAB = " ";
|
||||
|
||||
/**
|
||||
* 字符串常量:点 {@code "."}
|
||||
*/
|
||||
String DOT = ".";
|
||||
|
||||
/**
|
||||
* 字符串常量:双点 {@code ".."} <br>
|
||||
* 用途:作为指向上级文件夹的路径,如:{@code "../path"}
|
||||
*/
|
||||
String DOUBLE_DOT = "..";
|
||||
|
||||
/**
|
||||
* 字符串常量:斜杠 {@code "/"}
|
||||
*/
|
||||
String SLASH = "/";
|
||||
|
||||
/**
|
||||
* 字符串常量:反斜杠 {@code "\\"}
|
||||
*/
|
||||
String BACKSLASH = "\\";
|
||||
|
||||
/**
|
||||
* 字符串常量:回车符 {@code "\r"} <br>
|
||||
* 解释:该字符常用于表示 Linux 系统和 MacOS 系统下的文本换行
|
||||
*/
|
||||
String CR = "\r";
|
||||
|
||||
/**
|
||||
* 字符串常量:换行符 {@code "\n"}
|
||||
*/
|
||||
String LF = "\n";
|
||||
|
||||
/**
|
||||
* 字符串常量:Windows 换行 {@code "\r\n"} <br>
|
||||
* 解释:该字符串常用于表示 Windows 系统下的文本换行
|
||||
*/
|
||||
String CRLF = "\r\n";
|
||||
|
||||
/**
|
||||
* 字符串常量:下划线 {@code "_"}
|
||||
*/
|
||||
String UNDERLINE = "_";
|
||||
|
||||
/**
|
||||
* 字符串常量:减号(连接符) {@code "-"}
|
||||
*/
|
||||
String DASHED = "-";
|
||||
|
||||
/**
|
||||
* 字符串常量:逗号 {@code ","}
|
||||
*/
|
||||
String COMMA = ",";
|
||||
|
||||
/**
|
||||
* 字符串常量:花括号(左) <code>"{"</code>
|
||||
*/
|
||||
String DELIM_START = "{";
|
||||
|
||||
/**
|
||||
* 字符串常量:花括号(右) <code>"}"</code>
|
||||
*/
|
||||
String DELIM_END = "}";
|
||||
|
||||
/**
|
||||
* 字符串常量:中括号(左) {@code "["}
|
||||
*/
|
||||
String BRACKET_START = "[";
|
||||
|
||||
/**
|
||||
* 字符串常量:中括号(右) {@code "]"}
|
||||
*/
|
||||
String BRACKET_END = "]";
|
||||
|
||||
/**
|
||||
* 字符串常量:冒号 {@code ":"}
|
||||
*/
|
||||
String COLON = ":";
|
||||
|
||||
/**
|
||||
* 字符串常量:艾特 {@code "@"}
|
||||
*/
|
||||
String AT = "@";
|
||||
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 空格转义 {@code " " -> " "}
|
||||
*/
|
||||
String HTML_NBSP = XmlUtil.NBSP;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML And 符转义 {@code "&" -> "&"}
|
||||
*/
|
||||
String HTML_AMP = XmlUtil.AMP;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 双引号转义 {@code """ -> "\""}
|
||||
*/
|
||||
String HTML_QUOTE = XmlUtil.QUOTE;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 单引号转义 {@code "&apos" -> "'"}
|
||||
*/
|
||||
String HTML_APOS = XmlUtil.APOS;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 小于号转义 {@code "<" -> "<"}
|
||||
*/
|
||||
String HTML_LT = XmlUtil.LT;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 大于号转义 {@code ">" -> ">"}
|
||||
*/
|
||||
String HTML_GT = XmlUtil.GT;
|
||||
|
||||
/**
|
||||
* 字符串常量:空 JSON {@code "{}"}
|
||||
*/
|
||||
String EMPTY_JSON = "{}";
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import cn.hutool.core.text.ASCIIStrCache;
|
||||
import cn.hutool.core.text.CharPool;
|
||||
|
||||
/**
|
||||
* 字符工具类<br>
|
||||
@ -9,84 +10,7 @@ import cn.hutool.core.text.ASCIIStrCache;
|
||||
* @author looly
|
||||
* @since 4.0.1
|
||||
*/
|
||||
public class CharUtil {
|
||||
|
||||
/**
|
||||
* 字符常量:空格符 {@code ' '}
|
||||
*/
|
||||
public static final char SPACE = ' ';
|
||||
/**
|
||||
* 字符常量:制表符 {@code '\t'}
|
||||
*/
|
||||
public static final char TAB = ' ';
|
||||
/**
|
||||
* 字符常量:点 {@code '.'}
|
||||
*/
|
||||
public static final char DOT = '.';
|
||||
/**
|
||||
* 字符常量:斜杠 {@code '/'}
|
||||
*/
|
||||
public static final char SLASH = '/';
|
||||
/**
|
||||
* 字符常量:反斜杠 {@code '\\'}
|
||||
*/
|
||||
public static final char BACKSLASH = '\\';
|
||||
/**
|
||||
* 字符常量:回车符 {@code '\r'}
|
||||
*/
|
||||
public static final char CR = '\r';
|
||||
/**
|
||||
* 字符常量:换行符 {@code '\n'}
|
||||
*/
|
||||
public static final char LF = '\n';
|
||||
/**
|
||||
* 字符常量:减号(连接符) {@code '-'}
|
||||
*/
|
||||
public static final char DASHED = '-';
|
||||
/**
|
||||
* 字符常量:下划线 {@code '_'}
|
||||
*/
|
||||
public static final char UNDERLINE = '_';
|
||||
/**
|
||||
* 字符常量:逗号 {@code ','}
|
||||
*/
|
||||
public static final char COMMA = ',';
|
||||
/**
|
||||
* 字符常量:花括号(左) <code>'{'</code>
|
||||
*/
|
||||
public static final char DELIM_START = '{';
|
||||
/**
|
||||
* 字符常量:花括号(右) <code>'}'</code>
|
||||
*/
|
||||
public static final char DELIM_END = '}';
|
||||
/**
|
||||
* 字符常量:中括号(左) {@code '['}
|
||||
*/
|
||||
public static final char BRACKET_START = '[';
|
||||
/**
|
||||
* 字符常量:中括号(右) {@code ']'}
|
||||
*/
|
||||
public static final char BRACKET_END = ']';
|
||||
/**
|
||||
* 字符常量:双引号 {@code '"'}
|
||||
*/
|
||||
public static final char DOUBLE_QUOTES = '"';
|
||||
/**
|
||||
* 字符常量:单引号 {@code '\''}
|
||||
*/
|
||||
public static final char SINGLE_QUOTE = '\'';
|
||||
/**
|
||||
* 字符常量:与 {@code '&'}
|
||||
*/
|
||||
public static final char AMP = '&';
|
||||
/**
|
||||
* 字符常量:冒号 {@code ':'}
|
||||
*/
|
||||
public static final char COLON = ':';
|
||||
/**
|
||||
* 字符常量:艾特 {@code '@'}
|
||||
*/
|
||||
public static final char AT = '@';
|
||||
public class CharUtil implements CharPool {
|
||||
|
||||
/**
|
||||
* 是否为ASCII字符,ASCII字符位于0~127之间
|
||||
|
@ -193,6 +193,39 @@ public class ModifierUtil {
|
||||
return hasModifier(clazz, ModifierType.STATIC);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是合成字段(由java编译器生成的)
|
||||
*
|
||||
* @param field 字段
|
||||
* @return 是否是合成字段
|
||||
* @since 5.6.3
|
||||
*/
|
||||
public static boolean isSynthetic(Field field) {
|
||||
return field.isSynthetic();
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是合成方法(由java编译器生成的)
|
||||
*
|
||||
* @param method 方法
|
||||
* @return 是否是合成方法
|
||||
* @since 5.6.3
|
||||
*/
|
||||
public static boolean isSynthetic(Method method) {
|
||||
return method.isSynthetic();
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是合成类(由java编译器生成的)
|
||||
*
|
||||
* @param clazz 类
|
||||
* @return 是否是合成
|
||||
* @since 5.6.3
|
||||
*/
|
||||
public static boolean isSynthetic(Class<?> clazz) {
|
||||
return clazz.isSynthetic();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------- Private method start
|
||||
/**
|
||||
* 多个修饰符做“与”操作,表示同时存在多个修饰符
|
||||
|
@ -2,6 +2,7 @@ package cn.hutool.core.util;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.text.StrBuilder;
|
||||
import cn.hutool.core.text.StrPool;
|
||||
import cn.hutool.core.text.TextSimilarity;
|
||||
|
||||
import java.io.StringReader;
|
||||
@ -15,207 +16,7 @@ import java.util.Map;
|
||||
*
|
||||
* @author xiaoleilu
|
||||
*/
|
||||
public class StrUtil extends CharSequenceUtil {
|
||||
|
||||
/**
|
||||
* 字符常量:空格符 {@code ' '}
|
||||
*/
|
||||
public static final char C_SPACE = CharUtil.SPACE;
|
||||
|
||||
/**
|
||||
* 字符常量:制表符 {@code '\t'}
|
||||
*/
|
||||
public static final char C_TAB = CharUtil.TAB;
|
||||
|
||||
/**
|
||||
* 字符常量:点 {@code '.'}
|
||||
*/
|
||||
public static final char C_DOT = CharUtil.DOT;
|
||||
|
||||
/**
|
||||
* 字符常量:斜杠 {@code '/'}
|
||||
*/
|
||||
public static final char C_SLASH = CharUtil.SLASH;
|
||||
|
||||
/**
|
||||
* 字符常量:反斜杠 {@code '\\'}
|
||||
*/
|
||||
public static final char C_BACKSLASH = CharUtil.BACKSLASH;
|
||||
|
||||
/**
|
||||
* 字符常量:回车符 {@code '\r'}
|
||||
*/
|
||||
public static final char C_CR = CharUtil.CR;
|
||||
|
||||
/**
|
||||
* 字符常量:换行符 {@code '\n'}
|
||||
*/
|
||||
public static final char C_LF = CharUtil.LF;
|
||||
|
||||
/**
|
||||
* 字符常量:下划线 {@code '_'}
|
||||
*/
|
||||
public static final char C_UNDERLINE = CharUtil.UNDERLINE;
|
||||
|
||||
/**
|
||||
* 字符常量:逗号 {@code ','}
|
||||
*/
|
||||
public static final char C_COMMA = CharUtil.COMMA;
|
||||
|
||||
/**
|
||||
* 字符常量:花括号(左) <code>'{'</code>
|
||||
*/
|
||||
public static final char C_DELIM_START = CharUtil.DELIM_START;
|
||||
|
||||
/**
|
||||
* 字符常量:花括号(右) <code>'}'</code>
|
||||
*/
|
||||
public static final char C_DELIM_END = CharUtil.DELIM_END;
|
||||
|
||||
/**
|
||||
* 字符常量:中括号(左) {@code '['}
|
||||
*/
|
||||
public static final char C_BRACKET_START = CharUtil.BRACKET_START;
|
||||
|
||||
/**
|
||||
* 字符常量:中括号(右) {@code ']'}
|
||||
*/
|
||||
public static final char C_BRACKET_END = CharUtil.BRACKET_END;
|
||||
|
||||
/**
|
||||
* 字符常量:冒号 {@code ':'}
|
||||
*/
|
||||
public static final char C_COLON = CharUtil.COLON;
|
||||
|
||||
/**
|
||||
* 字符常量:艾特 {@code '@'}
|
||||
*/
|
||||
public static final char C_AT = CharUtil.AT;
|
||||
|
||||
|
||||
/**
|
||||
* 字符串常量:制表符 {@code "\t"}
|
||||
*/
|
||||
public static final String TAB = " ";
|
||||
|
||||
/**
|
||||
* 字符串常量:点 {@code "."}
|
||||
*/
|
||||
public static final String DOT = ".";
|
||||
|
||||
/**
|
||||
* 字符串常量:双点 {@code ".."} <br>
|
||||
* 用途:作为指向上级文件夹的路径,如:{@code "../path"}
|
||||
*/
|
||||
public static final String DOUBLE_DOT = "..";
|
||||
|
||||
/**
|
||||
* 字符串常量:斜杠 {@code "/"}
|
||||
*/
|
||||
public static final String SLASH = "/";
|
||||
|
||||
/**
|
||||
* 字符串常量:反斜杠 {@code "\\"}
|
||||
*/
|
||||
public static final String BACKSLASH = "\\";
|
||||
|
||||
/**
|
||||
* 字符串常量:回车符 {@code "\r"} <br>
|
||||
* 解释:该字符常用于表示 Linux 系统和 MacOS 系统下的文本换行
|
||||
*/
|
||||
public static final String CR = "\r";
|
||||
|
||||
/**
|
||||
* 字符串常量:换行符 {@code "\n"}
|
||||
*/
|
||||
public static final String LF = "\n";
|
||||
|
||||
/**
|
||||
* 字符串常量:Windows 换行 {@code "\r\n"} <br>
|
||||
* 解释:该字符串常用于表示 Windows 系统下的文本换行
|
||||
*/
|
||||
public static final String CRLF = "\r\n";
|
||||
|
||||
/**
|
||||
* 字符串常量:下划线 {@code "_"}
|
||||
*/
|
||||
public static final String UNDERLINE = "_";
|
||||
|
||||
/**
|
||||
* 字符串常量:减号(连接符) {@code "-"}
|
||||
*/
|
||||
public static final String DASHED = "-";
|
||||
|
||||
/**
|
||||
* 字符串常量:逗号 {@code ","}
|
||||
*/
|
||||
public static final String COMMA = ",";
|
||||
|
||||
/**
|
||||
* 字符串常量:花括号(左) <code>"{"</code>
|
||||
*/
|
||||
public static final String DELIM_START = "{";
|
||||
|
||||
/**
|
||||
* 字符串常量:花括号(右) <code>"}"</code>
|
||||
*/
|
||||
public static final String DELIM_END = "}";
|
||||
|
||||
/**
|
||||
* 字符串常量:中括号(左) {@code "["}
|
||||
*/
|
||||
public static final String BRACKET_START = "[";
|
||||
|
||||
/**
|
||||
* 字符串常量:中括号(右) {@code "]"}
|
||||
*/
|
||||
public static final String BRACKET_END = "]";
|
||||
|
||||
/**
|
||||
* 字符串常量:冒号 {@code ":"}
|
||||
*/
|
||||
public static final String COLON = ":";
|
||||
|
||||
/**
|
||||
* 字符串常量:艾特 {@code "@"}
|
||||
*/
|
||||
public static final String AT = "@";
|
||||
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 空格转义 {@code " " -> " "}
|
||||
*/
|
||||
public static final String HTML_NBSP = XmlUtil.NBSP;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML And 符转义 {@code "&" -> "&"}
|
||||
*/
|
||||
public static final String HTML_AMP = XmlUtil.AMP;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 双引号转义 {@code """ -> "\""}
|
||||
*/
|
||||
public static final String HTML_QUOTE = XmlUtil.QUOTE;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 单引号转义 {@code "&apos" -> "'"}
|
||||
*/
|
||||
public static final String HTML_APOS = XmlUtil.APOS;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 小于号转义 {@code "<" -> "<"}
|
||||
*/
|
||||
public static final String HTML_LT = XmlUtil.LT;
|
||||
|
||||
/**
|
||||
* 字符串常量:HTML 大于号转义 {@code ">" -> ">"}
|
||||
*/
|
||||
public static final String HTML_GT = XmlUtil.GT;
|
||||
|
||||
/**
|
||||
* 字符串常量:空 JSON {@code "{}"}
|
||||
*/
|
||||
public static final String EMPTY_JSON = "{}";
|
||||
public class StrUtil extends CharSequenceUtil implements StrPool {
|
||||
|
||||
// ------------------------------------------------------------------------ Blank
|
||||
|
||||
|
@ -0,0 +1,19 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class LambdaUtilTest {
|
||||
|
||||
@Test
|
||||
public void getMethodNameTest(){
|
||||
String methodName = LambdaUtil.getMethodName(MyTeacher::getAge);
|
||||
Assert.assertEquals("getAge", methodName);
|
||||
}
|
||||
|
||||
@Data
|
||||
static class MyTeacher{
|
||||
public String age;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user