Если вы используете EventBus, это, вероятно, гораздо более простое решение:
В вашем фрагменте:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
EventBus.getDefault().register(this);
}
@Override
public void onDetach() {
super.onDetach();
EventBus.getDefault().unregister(this);
}
// This method will be called when a MessageEvent is posted
public void onEvent(BackPressedMessage type){
getSupportFragmentManager().popBackStack();
}
и в вашем классе деятельности вы можете определить :
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
// This method will be called when a MessageEvent is posted
public void onEvent(BackPressedMessage type){
super.onBackPressed();
}
@Override
public void onBackPressed() {
EventBus.getDefault().post(new BackPressedMessage(true));
}
BackPressedMessage.java - это просто объект POJO
Это очень чисто и нет проблем с интерфейсом / реализацией.
Вы можете довольно легко настроить реализацию быстрой пересылки самостоятельно:
class MyNum
def initialize(number)
@number = number
end
def method_missing(name, *args, &blk)
ret = @number.send(name, *args, &blk)
ret.is_a?(Numeric) ? MyNum.new(ret) : ret
end
end
Затем вы можете добавить любые методы в MyNum, но вы в этих методах нужно будет работать с @number, вместо того, чтобы иметь возможность напрямую вызывать super.
Не могли бы вы расширить сам FixNum? Например ...
class Fixnum
def even?
self % 2 == 0
end
end
42.even?
IIRC, основная реализация Ruby хранит Fixnum как непосредственные значения, используя некоторые младшие биты слова, чтобы пометить его как Fixnum вместо указателя на объект в куче. Вот почему на 32-битной машине Fixnums - это только 29-битные (или что бы там ни было) вместо полного слова.
Таким образом, из-за этого вы не можете добавлять методы к одному «экземпляру» Fixnum , и вы не можете создать его подкласс.
Если вы категорически настроены на наличие класса «Fixnum-like», вам, вероятно, придется создать класс, имеющий переменную экземпляра Fixnum, и соответствующим образом пересылать вызовы методов .