Имам изискване, при което функцията взема различни параметри и връща уникални обекти. Всички тези функции изпълняват една и съща операция.
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
, последното от които е много малко вероятно да бъде добра идея тук. В този момент трябва да преразгледате дизайна си. Имам само доста бегла представа какво всъщност правите, но моделът Abstract Factory изглежда може да е полезен тук. Също така може да се окаже, че използването на претоварвания, както вече сте направили, е идеално решение. Трудно е да се каже без да се знае повече. - person Radiodef   schedule 06.07.2017new EitherType()
,objOfUnrelatedType.a = objOfAnotherUnrelatedType.a;
,return objOfEitherType;
) на двата метода са различни действия, тъй като подобният външен вид на изходния код не се брои. - person Holger   schedule 06.07.2017