簡體   English   中英

Java 類如何從條目 class 中獲取信息?

[英]How do Java classes get information from the Entry class?

So lets say that in my entry point class (ie the class which runs when the program starts (which has the public static void main(String args[]) function). In that class I have this variable:

private ArrayList<String> myData=new ArrayList<String>();

這個 class 實例化了另一個 class,它需要訪問入口點 class 的myData成員。 它如何檢索這個 arraylist?

編輯:為了澄清,在main()方法中我可以這樣做:

SomeOtherClass myClass=new SomeOtherClass();

然后我可以這樣做:

myClass.someMethod();

但是,在myClass object 中,我如何從條目 class 中執行方法/檢索某些內容,該條目實例化了myClass object?

讓 class 實例化訪問myData的最佳方法是在創建時將其傳遞給構造函數。

然后,在您的構造函數中,您可以將 ArrayList 保存到ArrayList的成員變量中。

例如,您的 object 構造函數將如下所示:

private ArrayList<String> myData;

public YourObjConstructor(ArrayList<String> data){
    myData = data;
}

聽起來你的入口點仍然是 static 當它調用其他一些 class 時,但你的 ArrayList 是它的一個實例的成員。 您需要離開 static 世界並進入實例。

我會將您的 main 方法重構為私有構造函數,並放入一個新的 main() 將其作為新實例啟動。

請注意,此代碼非常粗略,但它應該有助於說明您需要做什么。

public class EntryPoint {
    private ArrayList<String> myData=new ArrayList<String>();

    public static void main( String[] args ) {
        EntryPoint ep = new EntryPoint();
        ep.init();
    }

    private void init() {
        // Populate myData perhaps?

        SomeOtherClass myClass=new SomeOtherClass();
        myClass.someMethod( this );
    }

    public List<String> getMyData() {
        return myData;
    }
}   

public class SomeOtherClass {
    public void someMethod( EntryPoint entry ) {
        List<String> data = entry.getMyData();
        // do stuff with data..!
    }
}

包含main()的 class 只是一個普通的 class。 在您的情況下,您必須public myData並且可能公開static (或者,當然,添加訪問器)。 就像您對任何其他 class 所做的那樣。

您還可以將Entry object 傳遞給另一個 class,如下所示:

public static void main(String[] args) {
    Entry entry = new Entry();
    SomeOtherClass myClass=new SomeOtherClass(entry);
    // continue as before
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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