我正在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);
当我从其他地方调用它的函数时(DoStuff某个地方不知道),有没有办法让canvas,tick和toggle有意地传递给“DoStuff”。
答案 0 :(得分:1)
以这种方式设计会是一个糟糕的主意。为什么不用它来制作一个合适的类并实例化呢?
仅当函数本身不依赖于某些类变量时,才应使用静态函数。因此,为了让它干净利落地解决,并且不要冒险从应用程序的不同部分调用它之间的某种内存泄漏/冲突,你基本上必须保持它已经拥有它的方式并传递函数所需的每个参数,或创建一个类(使用非静态函数),使用您想要的值实例化它,然后只将something
值传递给函数。
除此之外,没有干净的解决方案。我建议你不要将值存储到public static
中,因为这可能会导致GC无法释放/清除某些内容,因为Canvas仍然在静态字段中分配,或者一个应用程序可能设置它的值,然后另一个也做,并覆盖第一个应用程序/活动设置,当第一个应用程序再次调用函数时,它会得到不可预测的结果。
只是一个问题作为旁注:如果经常使用/传递三个变量,为什么要保持静态?非静态会使OOP更有意义
答案 1 :(得分:0)
您可以做的最好的事情是将它们定义为DoStuff类中的全局变量,并仅在需要时设置它们并让所有函数从这些全局变量中获取值。这样你就可以通过不同的方法改变它们。
这样,您可以设置它们一次并使用它们不同的时间,但是您必须确保这些值在运行时不为空,需要一些修改才能使值始终存在,具体取决于您希望类的方式表现。
答案 2 :(得分:0)
只有三个不同的构造函数传递参数并在实例化之前选择正确的构造函数,然后调用所需的方法。