Как удалить дублирующийся код, используя java generics - PullRequest
0 голосов
/ 03 марта 2020

У меня есть методы ниже

ДО:

Employee getEmployee(String id){
  String url = "http://localhost" + id;
//duplicate code
}


List<Employee> getEmployees(){
  String url = "http://localhost";
//duplicate code
}

В вышеупомянутых 2 методах у меня есть дублирующийся код, я пробовал что-то вроде ниже:

ПОСЛЕ:

<T> T get(id){

//here duplicate code from above 2 methods
}


Employee getEmployee(String id){
  return get(id);
}

List<Employee> getEmployees(){
 return get(null);
}

Я новичок в дженериках, как решить вышеуказанную проблему?

1 Ответ

0 голосов
/ 04 марта 2020

На первый взгляд кажется, что у вас есть следующие опции:

  1. , если вы уверены, что ваш «дублированный код» всегда возвращает правильный тип, тогда вы всегда можете привести (может вызвать проблемы во время выполнения) но это не имеет ничего общего с обобщениями, тип возвращаемого значения не может зависеть от нуля или нет
Employee getEmployee(String id){
  return (Employee) get(id);
}

List<Employee> getEmployees(){
 return (List<Employee>) get(null);
}
другой вариант - всегда возвращать List в методе get и просто получать первый элемент в методе getEmployee (не забудьте проверить, не является ли он пустым, чтобы избежать IndexOutOfBoundsException)

Я считаю, что могут быть лучшие варианты. Также вы можете поделиться этой удаленной частью, возможно, она может быть улучшена. Честно говоря, у меня есть проблемы, если он полностью идентичен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...