关于指针的替代. 一般而言,尽量不要用方法指针,有高人写书道"应该用接口和内部内"代替,请大家给个例子,怎么替代:比如,我有一个方法myprint(int i,method f),是打印f(i)的,怎么用接口和内部类来替代? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想那位高人可能是说在c++里可以将方法的指针传递给调用者。java里面不叫指针,只能用接口实现,其实这就是传说中的回调 --callback //比如说// 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(); } } callback 有时候会在这种时候用到。比如,有一个exe或者dll(首先你不可能去修改这个exe),他的功能是完成一个文件copy ,但是可惜他没有进度条显示功能,但好在他这个copy功能的方法参数中有一个是方法的指针。那么我在调用这个copy功能的函数时,把我自己做的一个显示进度条的方法指针传给他,让他完成copy的同时又回掉我自己实现的完成显示进度条的功能。上面说的是用C语言的实现。但是在java里面只能用接口来实现。同样你可能拿到一个class而不是java原文件。你也不可能去改这个class。 public class Test{ public void play(Didoleo didoleo){ //比如这里做一些play的事情 didoleo.domysth(); //这里就被插入了本来play没有的功能,而这些功能是动态的。 //你想让他干什么就在myprint里面实现。这样就使的Test类"活" //起来了,也是扩展Test类的一种途径。现在不是提倡面向接口变 程 吗 }} 【新手学java】jdk1.6+myeclipse6.5+sqlserver2000数据库连接问题 setLayout 的问题 JDBC连接问题 Unknown constant tag xx in class的错误 java编程里如何生成Win32应用 程序(后缀名为.bat的) 请教关于多线程 ResultSetMetaDat问题求解 一个很简单的问题! 关于map的子类或‘孙类’ 我今天看东软的《短信网关sp接入接口》,发现东软真是差,差到了极点 请帮我翻译! 高分求SOCKET程序框架,不够在加!请大家帮忙!
java里面不叫指针,只能用接口实现,其实这就是传说中的回调 --callback
// 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();
}
}
比如,有一个exe或者dll(首先你不可能去修改这个exe),他的功能是完成一个文件copy ,
但是可惜他没有进度条显示功能,但好在他这个copy功能的方法参数中
有一个是方法的指针。那么我在调用这个copy功能的函数时,
把我自己做的一个显示进度条的方法指针传给他,让他完成copy
的同时又回掉我自己实现的完成显示进度条的功能。上面说的是用C语言的实现。但是在java里面只能用接口来实现。同样你可能拿到一个class而不是java
原文件。你也不可能去改这个class。
//比如这里做一些play的事情
didoleo.domysth(); //这里就被插入了本来play没有的功能,而这些功能是动态的。
//你想让他干什么就在myprint里面实现。这样就使的Test类"活"
//起来了,也是扩展Test类的一种途径。现在不是提倡面向接口变 程 吗
}}