2010-10-29 94 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明智