控制台打印封装工具 - Console
# 控制台打印封装工具 - Console
简介
在日常编码中,调试输出是常见需求,通常使用 System.out
和 System.err
进行信息打印。但是,这种方式存在以下问题:
- 无法支持参数化输出,拼接字符串变得繁琐。
- 打印数组需要手动调用
Arrays.toString
,增加代码冗余。 - 复杂对象的打印需要额外处理。
为了解决这些问题,Hutool
提供了 Console
工具类,对控制台打印进行封装,功能类似于 JavaScript 的 console.log()
,支持字符串模板和对象自动转换。
# 1. log
方法
Console.log
用于打印一般信息,类似于 System.out.println
,但支持字符串模板语法和对象自动转为字符串形式。
# 示例:基础信息打印
import cn.hutool.core.lang.Console;
public class ConsoleExample {
public static void main(String[] args) {
// 打印数组
String[] fruits = {"apple", "banana", "orange"};
Console.log(fruits); // 输出:[apple, banana, orange]
// 打印带模板的字符串
String name = "Alice";
Console.log("Hello, {}!", name); // 输出:Hello, Alice!
// 打印对象
Person person = new Person("John", 30);
Console.log(person); // 输出:Person{name='John', age=30}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
作用:Console.log
使信息打印更加便捷,适用于调试和简单日志输出,特别是在需要格式化输出或处理数组和对象时更加高效。
实际开发场景:当需要调试代码、输出对象状态或进行快速测试时,可以使用 Console.log
进行信息打印,避免复杂的字符串拼接。
# 2. error
方法
Console.error
用于打印错误信息,类似于 System.err.println
,但同样支持字符串模板语法和对象自动转换。
# 示例:错误信息打印
import cn.hutool.core.lang.Console;
public class ConsoleExample {
public static void main(String[] args) {
// 打印错误信息
String fileName = "data.txt";
Console.error("Failed to read file: {}", fileName);
// 输出:Failed to read file: data.txt
// 打印异常堆栈
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
Console.error(e);
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
作用:Console.error
主要用于打印错误信息和异常堆栈,适用于调试过程中捕获和显示错误信息。
实际开发场景:在捕获异常或处理错误时,可以使用 Console.error
进行直观的错误输出,方便定位和排查问题。
# 3. 支持的字符串模板
Console.log
和 Console.error
支持类似于 SLF4J 的字符串模板语法:
{}
为占位符,用于插入动态数据。- 支持多个
{}
,按照参数顺序依次替换。
# 示例:多占位符的字符串模板
import cn.hutool.core.lang.Console;
public class ConsoleExample {
public static void main(String[] args) {
String user = "Bob";
int age = 25;
String location = "New York";
// 使用多个占位符
Console.log("User: {}, Age: {}, Location: {}", user, age, location);
// 输出:User: Bob, Age: 25, Location: New York
}
}
2
3
4
5
6
7
8
9
10
11
12
13
# 4. 自定义打印对象的转换
对于复杂对象,Console
会自动调用对象的 toString()
方法。如果需要自定义打印效果,可以重写 toString()
方法。
# 示例:自定义对象的打印
import cn.hutool.core.lang.Console;
public class ConsoleExample {
public static void main(String[] args) {
Person person = new Person("Emily", 22);
Console.log(person); // 输出:Person{name='Emily', age=22}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 5. 打印数组和集合
Console
自动处理数组和集合的打印,将其转换为字符串形式,简化打印操作。
# 示例:数组和集合的打印
import cn.hutool.core.lang.Console;
import java.util.Arrays;
import java.util.List;
public class ConsoleExample {
public static void main(String[] args) {
// 打印数组
int[] numbers = {1, 2, 3, 4, 5};
Console.log(numbers); // 输出:[1, 2, 3, 4, 5]
// 打印集合
List<String> cities = Arrays.asList("Beijing", "Shanghai", "Guangzhou");
Console.log(cities); // 输出:[Beijing, Shanghai, Guangzhou]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
作用:Console
支持对数组和集合的友好打印,避免手动调用 Arrays.toString()
或 Collections.toString()
。
实际开发场景:在调试或展示复杂数据结构(如数组、列表)时,可以使用 Console
进行快速输出,减少代码冗余。
总结
Console
工具类提供了简洁、高效的控制台打印功能,适用于调试和信息输出。通过支持字符串模板、对象自动转换和数组集合友好打印,Console
大大简化了调试过程中的输出操作,使开发者能够更加专注于业务逻辑。