二、匿名对象可以作为实际参数进行传递。
当匿名对象作为实参传递给形参时,可以看做是给这个匿名对象在这个函数体中暂时起了个名字,他的名字就是形参。有了名字当然就可以继续调用这块内存了。
例如:main()
{
show (new car());
}
public static void show (car Benz)
{
Benz.color = red;
Benz.speed = 300;
Benz.run();
}
这个例子中当主函数运行到 show (new car())时,会在堆内存中开辟一块内存存放new car();并且此时把这块内存传递给了(指向了)形参Bens,类似于给这块内存起了个名字叫做Benz,也就是类似于这样一个操作 car Benz = new car();此时这块内存有了名字,也就为继续调用这块内存提供了可能性,此时可以通过Benz.xxx来继续使用过这块内存,所以此时这块内存他不是垃圾,因为你找得到他,也可以用他。但是一旦show函数结束了,Benz这个变量也就消失了(Benz只在show函数中存活);这样那块内存又失去了指向(引用),你也找不着那块内存了,那么那块内存就垃圾了。如果你在show函数结束后,还想使用那块内存,你只能事先定义一个非匿名变量了。