1. 程式人生 > >Cannot make a static reference to the non-static method

Cannot make a static reference to the non-static method

本質上是一個“沒有例項化物件”的問題。
在靜態方法中,不能直接訪問非靜態成員(包括方法和變數)。因為,非靜態的變數是依賴於物件存在的,物件必須例項化之後,它的變數才會在記憶體中存在。例如一個類 Student 表示學生,它有一個變數String address。如果這個類沒有被例項化,則它的 address 變數也就不存在。而非靜態方法需要訪問非靜態變數,所以對非靜態方法的訪問也是針對某一個具體的物件的方法進行的。對它的訪問一般通過 objectName.methodName(args……) 的方式進行。而靜態成員不依賴於物件存在,即使是類所屬的物件不存在,也可以被訪問,它對整個程序而言是全域性的。因此,在靜態方法內部是不可以直接訪問非靜態成員的。
一般來說。出現這個bug的原因,就是直接呼叫類的方法,而缺少一個“例項化物件”的過程。