У меня есть требование, когда функция принимает разные параметры и возвращает уникальные объекты. Все эти функции выполняют одну и ту же операцию.
ie.
public returnObject1 myfunction( paramObject1 a, int a) {
returnObject1 = new returnObject1();
returnObject1.a = paramObject1.a;
return returnObject1;
}
public returnOject2 myfunction( paramObject2 a, int a){
returnObject2 = new returnObject2();
returnObject2.a = paramObject2.a;
return returnObject2;
}
Как вы можете видеть выше, обе функции выполняют одну и ту же задачу, но принимают разные параметры в качестве входных данных и возвращают разные объекты.
Я хотел бы свести к минимуму написание разных функций, выполняющих одну и ту же задачу.
Можно ли написать для этого универсальный метод, который может подставлять параметры на основе вызова функции?
paramObject и returnObject — это, по сути, два класса с разными переменными. Они не связаны друг с другом.
Моя цель состоит в том, что я не хочу перегружать функции, поскольку функции выполняют почти ту же работу. Я хотел бы иметь одну функцию, которая может обрабатывать разные входные данные и разные выходные данные.
моя цель - сделать что-то вроде этого (если возможно):
public static < E > myfunction( T a, int a ) {
// do work
}
Тип возвращаемого значения E и ввод T могут изменяться.
public T myfunction(T param, int a)
- person Asew   schedule 06.07.2017ReturnObject
, либо дляParamObject
, последнее из которых вряд ли будет хорошей идеей. Именно в этот момент вы должны пересмотреть свой дизайн. У меня есть только довольно смутное представление о том, что вы на самом деле делаете, но шаблон абстрактной фабрики кажется здесь полезным. Также может быть так, что использование перегрузок, как вы уже сделали, является прекрасным решением. Трудно сказать, не зная больше. - person Radiodef   schedule 06.07.2017new EitherType()
,objOfUnrelatedType.a = objOfAnotherUnrelatedType.a;
,return objOfEitherType;
) любого метода являются разными действиями, поскольку одинаковый внешний вид исходного кода не учитывается. - person Holger   schedule 06.07.2017