匿名对象是未赋值给变量、直接创建并使用的对象,适用于仅需调用一次方法的场景,如new random().nextint(10)或list.add(new date()),可简化代码但不可重复调用。

Java 中匿名对象适合在只需要调用一次方法、不需后续引用的场景下使用,能省去变量声明,让代码更简洁。
什么是匿名对象
匿名对象是指没有显式赋值给变量、直接创建并使用的对象。它只在创建时存在,语句执行完后即失去引用(若无其他强引用),可被垃圾回收。
语法形式为:new 类名(参数).方法名(),例如:
new Scanner(System.in).nextInt();
适用场景与写法
以下情况适合用匿名对象:
- 调用工具类方法,如 new Random().nextInt(10) —— 不需要复用 Random 实例
- 临时传参,如 list.add(new Date()) —— 只需一个当前时间对象
- 事件监听(Swing/AWT)中一次性响应,如 button.addActionListener(new ActionListener() { ... })
- 函数式接口的简写(配合 Lambda 更常见),但传统匿名内部类也属于匿名对象范畴
注意事项
匿名对象不是万能的,要注意几点:
- 无法重复调用其方法,因为没有引用保存——new String("abc").length() 可以,但不能接着再调
.charAt(0) - 若需多次访问同一对象状态(比如反复读取输入、多次生成随机数),必须用命名对象,否则每次都是新实例
- 构造开销敏感场景(如高频循环内)慎用,避免无谓对象创建
- 调试时难以追踪,因为没有变量名,日志或断点不方便定位
对比命名对象更直观
比如读取一个整数:
命名方式(多一步声明):
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
匿名方式(一行搞定):
int x = new Scanner(System.in).nextInt();
后者更紧凑,语义清晰:「我只需要这一次输入,不用留着 Scanner」。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











