Я использую Interface
для CallBack
(оба из которых я очень новенький). До сих пор все мои CallBacks
имели один и тот же тип элемента, но теперь я хочу вернуть другой тип элемента.Есть ли альтернатива методам перегрузки в интерфейсе?
Текущая ситуация:
public interface CallBack {
void CallBack(String s)
}
То, что я думал, что будет работать:
public interface CallBack {
void CallBack(String s)
void CallBack(Integer i)
}
Это (очевидно, для большинства из вас) говорит мне, что я должен реализовать оба метода, когда с помощью CallBack
, который не мое предназначение.
Я знаю, что смогу «исправить» это сейчас, изменив его на void CallBack(Object o)
, но мне не нравится двусмысленный тип и хотелось бы сделать его более прочным.
Есть ли способ, что я могу сделать это так, мой CallBack
Override
выглядит следующим образом:
...new CallBack() {
@Override
public void CallBack(String s) {
...
... или ...
...new CallBack() {
@Override
public void CallBack(Integer i) {
...
... вместо того, чтобы реализовать оба , или используя вариант Object
?
no, как код, который получает обратный вызов, даже знает, какой тип вы хотите, когда все, что он видит, является интерфейсом 'CallBack'. PS: есть ли reaons не иметь несколько разных обратных вызовов? 'StringCallback',' IntCallback', ...? – zapl
Что именно вы подразумеваете под «получением обратного вызова»? Переопределенный метод знал бы, очевидно, так как вы пишете это сами, а место, где вы «вызываете» (?) Это, может знать, так как вы полагаете этот тип, я думаю? ('CallBack.CallBack ("SomeString");'). Как я уже сказал, я очень новичок в этом – Timmiej93
Вы имеете в виду сделать его общим? Вы могли бы это сделать. –