неявно передать параметры в класс - PullRequest
0 голосов
/ 29 октября 2010

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

Например, мой класс называется "DoStuff"

DoStuff имеет 3 функции:

public static doThis(canvas, tick, toggle, something);
public static doThat(canvas, tick, toggle, something, something);
public static doTheOther(canvas, tick, toggle, something, something, something);

Есть ли способ для меня, чтобы canvas, tick и toggle безоговорочно передавались в "DoStuff", когда я вызываю его функции откуда-то еще (что-то неизвестное DoStuff).

Ответы [ 3 ]

1 голос
/ 29 октября 2010

Было бы ужасной идеей, спроектировать это таким образом. Почему бы не сделать из этого надлежащий класс и создать его экземпляр?

Статические функции должны использоваться только тогда, когда сама функция не зависит от некоторых переменных класса. Таким образом, для того, чтобы он был полностью решен и не подвергался риску утечек / коллизий памяти между его вызовами из разных частей вашего приложения, вы должны либо сохранить его так, как он у вас уже есть, и передать каждый параметр, необходимый функции. или создайте класс (с нестатическими функциями), создайте его экземпляр с нужными значениями, а затем только передайте значения something в функции.

Кроме этого, нет чистого решения. Я бы посоветовал вам не сохранять значения в public static, потому что это может привести к тому, что некоторые вещи не могут быть освобождены / очищены GC, потому что Canvas все еще назначен в статическом поле, или одно приложение может установить его значения, затем другое тоже, и перезаписывает первые настройки приложения / acitvities, и когда первое приложение снова вызывает функции, оно получает непредсказуемые результаты.

Просто вопрос в качестве дополнительного примечания: почему вы хотите сохранить его статичным, если эти три переменные так часто используются / передаются? Нестатично будет иметь больше смысла ООП мудрый

0 голосов
/ 29 октября 2010

Просто укажите три разных конструктора для передачи аргументов и выберите правильный, прежде чем создавать его экземпляр, а затем вызовите нужный метод.

0 голосов
/ 29 октября 2010

Лучшее, что вы можете сделать - это определить их как глобальные переменные внутри класса DoStuff и устанавливать их только тогда, когда вам нужно, чтобы все функции получили значения из этих глобальных переменных. Таким образом, вы можете изменить их только тогда, когда вам нужно, с помощью другого метода.

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

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