У мене є вимога, де функція приймає різні параметри та повертає унікальні об’єкти. Усі ці функції виконують однакову операцію.
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