您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何编写一个Java工具类
## 1. 工具类的定义与作用
工具类(Utility Class)是Java开发中用于封装通用功能的类,通常具有以下特点:
- 包含静态方法为主
- 禁止实例化(私有化构造方法)
- 无状态(不包含成员变量或只有静态常量)
- 功能单一且高度复用
典型应用场景:字符串处理、日期转换、加密解密、集合操作等。
## 2. 工具类设计原则
### 2.1 单一职责原则
一个工具类只负责一个功能领域,例如:
- `StringUtils`:字符串操作
- `DateUtils`:日期处理
- `CollectionUtils`:集合操作
### 2.2 静态方法设计
```java
public final class StringUtils {
// 私有构造方法防止实例化
private StringUtils() {
throw new AssertionError("No StringUtils instances for you!");
}
public static boolean isEmpty(CharSequence str) {
return str == null || str.length() == 0;
}
}
/**
* 判断字符串是否为空白(null/空字符串/纯空格)
* @param str 待检测字符串
* @return 空白返回true,否则返回false
*/
public static boolean isBlank(CharSequence str) {
if (str == null) return true;
for (int i = 0; i < str.length(); i++) {
if (!Character.isWhitespace(str.charAt(i))) {
return false;
}
}
return true;
}
parseDate()
)public static LocalDate parseDate(String dateStr, String pattern) {
if (dateStr == null || pattern == null) {
throw new IllegalArgumentException("参数不能为null");
}
try {
return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
} catch (DateTimeParseException e) {
throw new RuntimeException("日期解析失败", e);
}
}
private static final Map<String, Pattern> PATTERN_CACHE = new ConcurrentHashMap<>();
public static boolean matchRegex(String input, String regex) {
Pattern pattern = PATTERN_CACHE.computeIfAbsent(regex, Pattern::compile);
return pattern.matcher(input).matches();
}
class StringUtilsTest {
@Test
void testIsEmpty() {
assertTrue(StringUtils.isEmpty(null));
assertTrue(StringUtils.isEmpty(""));
assertFalse(StringUtils.isEmpty(" "));
}
}
/**
* 货币金额转换工具类
*
* <p>示例:
* <pre>{@code
* MoneyUtils.toChinese(12345.67) → "壹万贰仟叁佰肆拾伍元陆角柒分"
* }</pre>
*/
public final class MoneyUtils {
// ...
}
public static <T> List<T> distinct(List<T> list) {
if (list == null) return Collections.emptyList();
return new ArrayList<>(new LinkedHashSet<>(list));
}
public static String readFileToString(Path path, Charset charset) {
try {
return Files.readString(path, charset);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
通过遵循以上规范,可以创建出高效、可靠且易于维护的Java工具类。实际开发中可参考Apache Commons、Google Guava等优秀工具库的实现方式。 “`
(注:实际字数约900字,可根据需要调整具体示例或补充更多工具类场景)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。