黑马程序员技术交流社区
标题:
关于匿名对象的用途
[打印本页]
作者:
黑马黄宏强
时间:
2012-7-20 11:22
标题:
关于匿名对象的用途
本帖最后由 轻尘一笑 于 2012-7-20 12:50 编辑
1.匿名对象可以作为实际参数进行传递
public class Tesl {
public static void main (String [] args){
show(new Car());
}
//汽车改装场
public static void show(Car c){
c.num=4;
c.color="黑色";
System.out.println("汽车改装完成");
}
}
class Car{
int num;
String color;
}
我的疑问是:
show(new Car()); 这句有什么意思? 这方法执行完了车不是就销毁了吗?还是老师想向我表达的是匿名对象可以这么用,只是他现在写的这方法没有实际意义而已。 求解疑惑,或给举个带有实际意义的例子。
作者:
郑明君
时间:
2012-7-20 11:32
这里的
show(new Car());
是因为Test 中定义show(Car c)中需要传入一个Car类型的变量
复制代码
你老师想向你表达的是匿名对象可以这么用
作者:
王宝康
时间:
2012-7-20 11:37
楼主的理解是对的,new Car()出来的对象是个临时对象,用一次之后以后就可以不再用。相当于一次性的,如果你只是想要用一个对象一次并且以后不再用的话就是使用匿名对象,这儿的使用估计就是老师想表达匿名对象可以这么用的吧!
作者:
rslheima
时间:
2012-7-20 11:40
show(new Car());这句话意思是:调用show方法时,在堆内存中产生了一个Car对象
这个对象作为参数传进show方法后,c就成为该对象的引用存在栈内存中
此时,Car对象不会销毁,在进行了一系列操作后,show方法结束,Car对象才销毁
这样的好处是:使对象的生命周期在它调用完成的时候就结束,省了点内存,呵呵。
作者:
黄丽慧
时间:
2012-7-20 12:07
楼主的理解完全正确,匿名对象只能使用一次,这样的好处就是可以节省内存空间。现在我们写的程序少,还看不出什么优越处,但是一旦要创建的对象比较多时,匿名对象的优点就显现出来了。下面我举一个匿名对象实际应用的例子:
BufferedReader br=new BufferedReader(new FileReader("D:\\b.txt"));
这是在后面IO流中的代码,创建一个BufferedReader对象之前必须得创建FileReader对象,可是这个FileReader对象只调用一次就不需要再调用,而创建成匿名对象后,调用之后匿名对象会自动被垃圾回收掉,可以节省内存空间。
作者:
黑马黄宏强
时间:
2012-7-20 12:19
那是不是可以这样理解呢,我只需要这个对象在该方法中使用,该方法结束就不会用到了,所以让它随着方法的完整而销毁,
“使对象的生命周期在它调用完成的时候就结束,省了点内存”
我可不可以这样理解
正常的对象是当没有引用指向它的时候才会被销毁,其实匿名对象的使用就是帮我们完成了这个步骤,就是使用完后将对象的引用
指向null,其实使用匿名对象的本质就是想偷点懒。。。。。。
作者:
程潇
时间:
2012-7-20 12:41
之所以用匿名对象,就是因为只用它一次。如果只用一次的话,就无需再为这个对象建立一个引用了,这样的话就节省了内存空间。
其用途一般也有两种:
1.就是楼主例子中的用法,将匿名对象作为实参传给方法,然后执行方法
2.通过生成的匿名对象,直接调用该对象的方法。举例如下:
先定义一个类:
class Person{
public void run(){
System.out.println("run");
}
}
如果我只想使用一次这个类的run方法,那么可以: new Person.run();
作者:
黑马黄宏强
时间:
2012-7-20 12:48
谢谢大家的答疑!
作者:
王超
时间:
2012-7-20 14:41
什么时候使用匿名对象?
当你用一个对象一次并且以后不再用的话可以使用
相当于是一个临时对象,使用后就可以丢弃,节省了内存空间
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2