簡體   English   中英

在靜態方法中使用非靜態變量或調用非靜態方法(使用對象實例進行訪問)是一種好習慣嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM