Неважно ... нашел ответ здесь:)
http://www.javaworld.com/javaworld/javatips/jw-javatip10.html
Вставка из статьи, чтобы сохранить ее:
Разработчики, знакомые с управляемой событиями программной моделью MS-Windows и X Window System, привыкли передавать функциональные указатели, которые вызываются (то есть «перезваниваются»), когда что-то происходит.Объектно-ориентированная модель Java в настоящее время не поддерживает указатели на методы, и поэтому, похоже, не позволяет использовать этот удобный механизм.Но еще не все потеряно!
Поддержка интерфейсов в Java предоставляет механизм, с помощью которого мы можем получить эквивалент обратных вызовов.Хитрость заключается в том, чтобы определить простой интерфейс, который объявляет метод, который мы хотим вызвать.
Например, предположим, что мы хотим получать уведомление, когда происходит событие.Мы можем определить интерфейс:
public interface InterestingEvent
{
// This is just a regular method so it can return something or
// take arguments if you like.
public void interestingEvent ();
}
Это дает нам контроль над любыми объектами классов, которые реализуют интерфейс.Таким образом, нам не нужно заниматься какой-либо другой посторонней информацией типа.Это гораздо приятнее, чем взламывание функций батута C, которые используют поле данных виджетов для хранения указателя объекта при использовании кода C ++ с Motif.
Класс, который будет сигнализировать о событии, должен ожидать объекты, реализующие * 1020Интерфейс * InterestingEvent , а затем, при необходимости, вызовите метод интересноEvent () .
public class EventNotifier
{
private InterestingEvent ie;
private boolean somethingHappened;
public EventNotifier (InterestingEvent event)
{
// Save the event object for later use.
ie = event;
// Nothing to report yet.
somethingHappened = false;
}
//...
public void doWork ()
{
// Check the predicate, which is set elsewhere.
if (somethingHappened)
{
// Signal the even by invoking the interface's method.
ie.interestingEvent ();
}
//...
}
// ...
}
В этом примере я использовал предикат thingHappened , чтобы отслеживатьили нет событие должно быть запущено.Во многих случаях сам факт того, что метод был вызван, достаточен, чтобы гарантировать сигнализацию интересноEvent () .
Код, который желает получить уведомление о событии, должен реализовывать InterestingEvent интерфейса и просто передайте ссылку на себя уведомителю о событии.
public class CallMe implements InterestingEvent
{
private EventNotifier en;
public CallMe ()
{
// Create the event notifier and pass ourself to it.
en = new EventNotifier (this);
}
// Define the actual handler for the event.
public void interestingEvent ()
{
// Wow! Something really interesting must have occurred!
// Do something...
}
//...
}
Это все, что нужно сделать.Я надеюсь, что использование этой простой идиомы Java сделает ваш переход на Java немного менее нервным.