关于指针的替代.

Helloooooo 2006-02-11 07:54:18
一般而言,尽量不要用方法指针,有高人写书道"应该用接口和内部内"代替,请大家给个例子,怎么替代:

比如,我有一个方法myprint(int i,method f),是打印f(i)的,怎么用接口和内部类来替代?
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
didoleo 2006-02-17
  • 打赏
  • 举报
回复
public class Test{

public void play(Didoleo didoleo){
//比如这里做一些play的事情
didoleo.domysth(); //这里就被插入了本来play没有的功能,而这些功能是动态的。
//你想让他干什么就在myprint里面实现。这样就使的Test类"活"
//起来了,也是扩展Test类的一种途径。现在不是提倡面向接口变 程 吗
}

}
didoleo 2006-02-17
  • 打赏
  • 举报
回复
callback 有时候会在这种时候用到。
比如,有一个exe或者dll(首先你不可能去修改这个exe),他的功能是完成一个文件copy ,
但是可惜他没有进度条显示功能,但好在他这个copy功能的方法参数中
有一个是方法的指针。那么我在调用这个copy功能的函数时,
把我自己做的一个显示进度条的方法指针传给他,让他完成copy
的同时又回掉我自己实现的完成显示进度条的功能。

上面说的是用C语言的实现。

但是在java里面只能用接口来实现。同样你可能拿到一个class而不是java
原文件。你也不可能去改这个class。
HengHuan 2006-02-13
  • 打赏
  • 举报
回复
远方有一盏灯
执假以为真 2006-02-11
  • 打赏
  • 举报
回复
这样做究竟是有什么好处,有什么目的要这么做呢?
冷月无声高手,可以解释一下吗?
didoleo 2006-02-11
  • 打赏
  • 举报
回复
//比如说
// Helloooooo 要调用Test里的play方法,而Test的play方法又callback了Helloooooo 里的//myprint方法。

public class Helloooooo implements Didoleo {

public Helloooooo(){
}

public void domysth(){
myprint(100);
}

public void myprint(int i){ // callback method
System.out.println("Hello Helloooooo "+i);
}

public static void main(String[] args){
Helloooooo helloooooo=new Helloooooo();
Test test =new Test();
test.play(helloooooo);
}

}


//////////////////////////

public interface Didoleo{

public void domysth();

}

//////////////////////////

public class Test{

public void play(Didoleo didoleo){
didoleo.domysth();
}

}
didoleo 2006-02-11
  • 打赏
  • 举报
回复
我想那位高人可能是说在c++里可以将方法的指针传递给调用者。
java里面不叫指针,只能用接口实现,其实这就是传说中的回调 --callback

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧