Вызовите метод, имеющий один необязательный параметр - PullRequest
1 голос
/ 07 июня 2019

Я столкнулся с подобным решением моей проблемы, но мне нужна дополнительная информация.В соответствии с моим вариантом использования я создал метод, который принимает два параметра, один из которых является обязательным, а другой необязательным.

public void myMethod(Required req){ ... }

В моем приложении есть много методов, вызывающих myMethod.Мне нужно обновить его, добавив еще один необязательный параметр в myMethod, например:

public void myMethod(Required req, NotRequired nr){ ... }

Я хочу добавить один необязательный параметр, не затрагивая ранее существующие методы вызывающих.Я хочу сказать, что я хочу вызывать myMethod следующими способами:

Required req = new Required();
NotRequired nr = new NotRequired();
myMethod(req);
myMethod(nr);

Я обнаружил необязательный параметр java в методах , что заставило меня подумать, что это возможно только в Javaиспользуя шаблон Builder, но я предполагаю, что мой случай здесь совсем другой.Если это можно сделать, любые предложения будут оценены!

Ответы [ 3 ]

4 голосов
/ 07 июня 2019

Как насчет создания двух методов:

public void myMethod(Required req){ }

public void myMethod(Required req, NotRequired nr){ }

Если вам нужен только метод, который принял параметр Required, тогда вызовите первый, если вам нужен метод, который требует как обязательный, так и необязательный вызов, вызовите второй

2 голосов
/ 07 июня 2019

Вы можете просто использовать оба метода и myMethod(req) звонки myMethod(req, nr):

public void myMethod(Required req){
    myMethod(req, new NotRequired());
}

public void myMethod(Required req, NotRequired nr){
    // ...
}

Таким образом, вы можете либо позвонить myMethod(req), если вы хотите использовать только требуемый параметр, либо myMethod(req, nr), если выхочу использовать оба параметра.

0 голосов
/ 07 июня 2019

Перегрузите ваши методы разными сигнатурами. Сигнатуры ранее существующих методов не меняются.

...