2010-10-29 109 views
0

我正在编写一个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); 

有没有办法,让我有帆布,勾选并切换implicetly传递给“DoStuff”时我从其他地方调用它的功能(DoStuff中某处不知道的地方)。

回答

0

您可以做的最好的事情是将它们定义为DoStuff类中的全局变量,并仅在需要时设置它们,并让所有函数从这些全局变量中获取值。这样,只有通过不同的方法才能更改它们。

这样,您可以设置它们一次并在不同时间使用它们,但是您必须确保这些值在运行时不为空,需要一些修补程序才能使值始终存在,具体取决于您希望如何分类表现。

+0

我明白你的意思,这可以工作,但我该如何定义一个无空画布在那里? – Hamid 2010-10-29 13:58:48

+0

定义它时,可以为其分配一个空的Canvas对象。 – AndrewKS 2010-10-29 15:03:34

0

只有三种不同的构造函数可以传入参数并在实例化之前选择合适的构造函数,然后调用所需的方法。

+0

我没有实例化它,它的所有功能都是静态的。 – Hamid 2010-10-29 15:23:58

1

这将是一个可怕的想法,设计它的方式。为什么不从其中创建适当的课程并实例化它?

只有在函数本身不依赖某些类变量时才应该使用静态函数。因此,为了让它干净地解决,不要冒任何形式的内存泄漏/应用程序不同部分之间的内存泄漏/冲突风险,您基本上必须按照您已有的方式保持它,并将必要的每个参数传递给该函数,或者创建一个类(使用非静态函数),用您想要的值实例化它,然后仅将something值传递给函数。

除此之外,没有干净的解决方案。我建议你不要将值存储到public static,因为这可能导致某些内容无法由GC释放/清理,因为Canvas仍然分配在静态字段中,或者一个应用可能会设置它的值,那么另一个也会覆盖第一个应用/活动设置,并且当第一个应用再次调用这些功能时,它会得到不可预知的结果。

只是一个问题作为旁注:为什么你想保持它静态,如果这三个变量是如此经常使用/通过?非静态会更有意义OOP明智