匿名对象是一个创建的对象,没有为该对象分配任何名称。
当你在Java中创建一个对象时,你通常会给该对象分配一个名字。
在下面的代码中,一个新实例化的Person 对象被分配到引用变量nathan :
class Person {
void call() {
System.out.println("Hello!");
}
}
Person nathan = new Person();
nathan.call(); // Hello!
参考变量nathan 指向Person 对象实例,所以无论何时你想在代码中使用或操作该对象,你都要用变量名来调用它。
另一方面,匿名对象在实例化时没有分配给引用变量,所以你在实例化后不能引用该对象。
在下面的代码中,一个新的Person 对象的call() 方法被直接调用:
new Person().call(); // Hello!
虽然不常见,但当你在程序中需要一个对象不超过一次时,匿名对象是有用的。你仍然可以调用它的方法,就像它们是静态方法一样。
下面显示了你如何使用匿名对象来调用其方法:
class Person {
void call(String name) {
System.out.println("Hello, " + name + "!");
}
int sum(int x, int y) {
return x + y;
}
}
new Person().call("Jane"); // Hello, Jane!
int calculation = new Person().sum(7, 20);
System.out.println(calculation); // 27
从Java 10开始,你也可以在实例化过程中通过用var 关键字保存实例来创建和存储一个匿名对象。
在下面的代码中,创建了一个新的Object ,并从myObj 参考变量中进行引用:
boolean result = true;
var myObj = new Object() {
void greetings() {
System.out.println("Hello World!");
}
boolean success = result;
};
System.out.println(myObj.success); // true
myObj.greetings(); // Hello World!
Java 10中的var 关键字将根据周围的环境推断出变量的类型。
在new Object() 体内,你可以定义对象实例将拥有的变量和方法。
之后,你可以像普通对象一样调用和使用实例变量和方法。
现在你已经学会了如何在Java中创建和使用匿名对象,干得好!👍