起初它認爲這是通過一個接口完成的,但後來我發現它應該使用抽象類來完成。
我有這樣的方式解決它:
編輯:最近,我只是用這個:
public static abstract class callback1<T>{
public abstract void run(T value);
}
public static abstract class callback2<T,J>{
public abstract void run(T value,J value2);
}
public static abstract class callback3<T,J,Z>{
public abstract void run(T value,J value2,Z value3);
}
public static abstract class callbackret1<R,T>{
public abstract R run(T value);
}
public static abstract class callbackret2<R,T,J>{
public abstract R run(T value,J value2);
}
public static abstract class callbackret3<R,T,J,Z>{
public abstract R run(T value,J value2,Z value3);
}
回調。的java
public abstract class CallBack<TRet,TArg> {
public abstract TRet call(TArg val);
}
定義方法:
class Sample2
{
CallBack<Void,String> cb;
void callcb(CallBack<Void,String> CB)
{
cb=CB; //save the callback
cb.call("yes!"); // call the callback
}
}
使用方法:
sample2.callcb(new CallBack<Void,String>(){
@Override
public Void call(String val) {
// TODO Auto-generated method stub
return null;
}
});
兩個參數樣品:CallBack2.java
public abstract class CallBack2<TRet,TArg1,TArg2> {
public abstract TRet call(TArg1 val1,TArg2 val2);
}
注意,當你使用Void返回類型時,你必須使用return null; 所以這裏是一個修正,因爲通常回調不會返回任何值。
空隙作爲返回類型:SimpleCallBack.java
public abstract class SimpleCallBack<TArg> {
public abstract void call(TArg val);
}
空隙作爲返回類型2 ARGS:SimpleCallBack2.java
public abstract class SimpleCallBack<TArg1,TArg2> {
public abstract void call(TArg1 val1,TArg2 val2);
}
接口不是爲這是有用的。
接口允許多種類型匹配相同的類型。通過共享預定義的一組功能。
抽象類允許內部的空函數稍後完成。在擴展或實例化。
沒有,但看到像http://www.programmingforums.org/thread27905.html的東西。 –