[英]Is it a good practice to use non-static variables or invoke a non-static method (access using the object instance) within the static method?
隨着例如 :它是靜態方法中(使用對象實例訪問)使用非靜態變量或調用非靜態方法一個好的做法呢?
公共類StringTest {
public String string = "helloworld";
public String subString(String str)
{
str = str.substring(1, 4);
return str;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stubs
StringTest st = new StringTest();
System.out.println("substring "+st.subString(st.string));
}
我正在使用類的實例來調用subString方法。還使用實例來傳遞參數字符串 。 這是一個好習慣嗎? 還是靜態方法只能修改靜態變量並調用靜態方法。
如果嘗試這樣做,編譯器會抱怨。 在靜態方法內聲明的變量是隱式靜態的。 如果您嘗試訪問非靜態程序,則程序將無法編譯。
嘗試一下,您將發現這是不可能的。 您只能從靜態方法訪問靜態成員。
一個快速的插圖,希望能給您一個單視圖的摘要:
我相信您在調用實例的方法時將實例傳遞給靜態方法(或指向它的靜態字段),如果是這種情況,那是可以的,並且這與我所知道的都不抵觸。
這是一個壞習慣。 你絕對不應該那樣做。 而且,實際上,在Java中,您永遠無法實現這一目標。
您可以通過創建instance來從靜態上下文訪問非靜態成員,但這不是從非靜態上下文調用靜態成員的好習慣……
http://javaguideforall.blogspot.in/2013/04/why-non-static-variable-cannot-be.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.