Call Dynamically Overloaded Function in Java

Bir atadan oluşan farklı nesneleriniz olsun.  Bu nesneler için overload edilmiş private fonksiyonlarınız var. Fakat dışarıdan çağıran, sadece super class’ın tipini biliyor. Size bunu verdiğinde objenin kendi sınıfı ile ilişkili fonksiyona gönderilmek isteniyor. Bu en dinamik şekilde nasıl yapılır?

Eğer böyle bir probleminiz varsa cevabı aşağıda bulabilirsiniz :

Call Dynamically Overloaded Function in Java
———————————————————————————
public interface IMessage{}
public class Message1 implements IMessage{}
public class Message2 implements IMessage{}

public void onMessage(IMessage msg) {
// call onMessage related with its own class
//  onMessage((msgClass) msg);
Class<?> msgClass = msg.getClass();
Method onMessageMethod = this.getClass().getMethod(“onMessage”, msgClass);
onMessageMethod.invoke(this, msg);
}

private void onMessage(Message1 message) {}
private void onMessage(Message2 message) {}

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.