匿名对象是未命名、仅创建一次即使用的对象,如new string("hello");可直接传参、用于集合添加、线程启动等场景,但只能使用一次,多次访问需用变量保存。

Java中可以直接把匿名对象作为参数传给方法,不需要先声明变量。
什么是匿名对象
匿名对象是指没有名字、只创建一次就使用的对象。它在内存中存在,但没有引用变量指向它,用完即被垃圾回收器回收。
例如:new String("hello") 就是一个匿名对象;new ArrayList() 也是一个匿名对象。
直接传递给方法的语法
只要方法参数类型匹配,就可以把 new 类名(...) 直接写在实参位置。
- 方法定义:public void printLength(String s) { System.out.println(s.length()); }
- 调用方式:printLength(new String("abc")); // ✅ 正确
- 等价于:String tmp = new String("abc"); printLength(tmp);
常见使用场景
适合一次性使用、不需复用的对象,比如:
- 向集合添加新对象:list.add(new Person("张三", 25));
- 启动线程:new Thread(() -> System.out.println("run")).start();
- 设置监听器(Swing/AWT):button.addActionListener(new ActionListener() { ... });
- Lambda 表达式本质也是匿名对象(函数式接口的实例)
注意事项
匿名对象只能使用一次,不能调用多次方法或获取多个属性。
- ❌ 错误写法:new Date().getTime(); new Date().toString(); // 创建了两个不同对象
- ✅ 正确做法:Date d = new Date(); System.out.println(d.getTime() + d.toString());
- 如果需要多次访问同一个对象的状态,必须用变量保存
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











