黑马程序员技术交流社区

标题: 匿名类作为形式参数的问题? [打印本页]

作者: 张宏祚    时间: 2013-12-3 16:54
标题: 匿名类作为形式参数的问题?

我看到有很多代码为了简便,将形式参数中使用了匿名类,但是
形式参数里面,用匿名类,那方法里用什么指代那个匿名类啊?


例如 :

public void show(new person()){
   
  在这个里面怎么使用那个匿名类?

}

或者,匿名类中有一个方法,我需要调用,该怎么办?

public void show(new person()){
   
  在这个里面怎么调用person的方法?

}


作者: 25343215    时间: 2013-12-3 17:12
本帖最后由 25343215 于 2013-12-3 17:14 编辑

这要看方法是怎么样定义的,假设方法是:
class Person{   public String name; public String age}

public String show(Person person){
   return person.name+person.age;
}
那么我们在使用show方法时完全可以 show(new Person("lisi",23){ }这样的方法,他就相当于先new出来一个Person,然后向show方法里面传入Person的引用变量。

作者: 张宏祚    时间: 2013-12-3 17:14
25343215 发表于 2013-12-3 17:12
这要看方法是怎么样定义的,假设方法是:
class Person{   public String name; public String age}

对,哥们,就是这个意思,但是,把new出来的person传递进去了,怎么指代这个person啊?
作者: 25343215    时间: 2013-12-3 17:18
张宏祚 发表于 2013-12-3 17:14
对,哥们,就是这个意思,但是,把new出来的person传递进去了,怎么指代这个person啊? ...

看原来是怎么样定义的方法,我们假设是下面的代码
public String show(Person person){
   return person.name+person.age;
}

那么 show(new Person){} 这样传入后,按照方法的定义,我们使用person来接受,并在方法里面用person来表示。
希望能帮到你!



作者: 李文帅    时间: 2013-12-3 17:30
楼主的想法根本不能实现,因为方法定义的格式如下:
修饰符 返回值类型 方法名(参数类型 参数1,参数类型,参数2,...)
{
    方法体;
}
因为方法中的参数必须要定义参数类型和形参名,所以形式参数不可能是匿名类,并且形式参数是变量,而匿名类是对象,匿名类可以在调用方法时可以作为实参传递给方法
所以我认为楼主的想法是不成立的
作者: 李文帅    时间: 2013-12-3 17:57
抱歉,我误解了楼主的意思了
new Person()是作为一个实参传递给方法的,但这个实参对应的是一个形参,相当于这个形参指向了这个new Person(),所以方法中访问该形参或调用该形参的方法,即是对该new Person()或该new Person()的方法访问
作者: 张宏祚    时间: 2013-12-3 20:42
25343215 发表于 2013-12-3 17:18
看原来是怎么样定义的方法,我们假设是下面的代码
public String show(Person person){
   return perso ...

恩,说的有理!
作者: 简★零度    时间: 2013-12-5 22:52
下次问题解决了就把类型改成提问结束!谢谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2