#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 - базовый, поэтому можно сделать так. Потом достаточно будет приводить возвращаемое значение к нужному
Комментариев нет:
Отправить комментарий