Страницы

Поиск по вопросам

суббота, 1 февраля 2020 г.

Объявление неизвестного типа в интерфейсе

#android #java #классы #ооп


Здравствуйте!
Подскажите пожалуйста решение такой задачи:
interface IModel{
  public int getId();
}

class modelA implement IModel{
  private int id;
  public int getId(){
    return id;
  }
}

class modelB implement IModel{
  private String id;
  public String getId(){
    return id;
  }
}

Как мне в интерфейсе сказать, что getId() может возвращать как int, так и String?    


Ответы

Ответ 1



Думаю, имеет смысл сделать два интерфейса, один из которых будет содержать int getId(), а второй String getId(). Если же помимо этого метода интерфейс должен содержать еще какие-то другие, то имеет смысл сделать один общий интерфейс с общими методами, а от него наследовать два интерфейса-потомка, у одного из которых будет метод int getId(), а у другого string getId(). Я надеюсь, Java позволяет наследовать интерфейсы друг от друга? Если же не позволяет, то можно вынести все общие методы в один интерфейс, а два отличающихся разнести по отдельным. Не думаю, что введение одного-двух новых интерфейсов будет трагедией, особенно на фоне предлагавшихся ранее манипуляций с приведением и/или выдиранием нужного значения из строки

Ответ 2



interface IModel { public T getId(); } class modelA implements IModel { private int id; public Integer getId() { return id; } } class modelB implements IModel { private String id; public String getId() { return id; } }

Ответ 3



interface IModel { public Object getId(); } Для классов Integer и String класс Object - базовый, поэтому можно сделать так. Потом достаточно будет приводить возвращаемое значение к нужному

Комментариев нет:

Отправить комментарий