पहले यह सोचा कि यह एक इंटरफ़ेस के साथ किया गया है लेकिन फिर मुझे पता चला कि यह एक अमूर्त वर्ग का उपयोग करके किया जाना चाहिए।
मैं इसे इस तरह से हल कर लिया है:
संपादित करें: हाल ही में मैं सिर्फ इस का उपयोग करें:
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);
}
कॉलबैक।जावा
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);
}
ध्यान दें कि जब आप शून्य रिटर्न प्रकार का उपयोग करते हैं तो आपको रिटर्न नल का उपयोग करना होगा; तो यहां इसे ठीक करने के लिए एक भिन्नता है क्योंकि आमतौर पर कॉलबैक किसी भी मूल्य को वापस नहीं करते हैं। वापसी प्रकार के रूप में
शून्य: 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 जैसी चीजों को देखने। –