Java类如何从Entry类中获取信息?

时间:2009-03-04 19:35:46

标签: java oop

所以我想在我的入口点类(即程序启动时运行的类(具有public static void main(String args[])函数))。在该类中我有这个变量:

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

此类实例化另一个类,该类需要能够访问入口点类的myData成员。怎么能找回这个arraylist?

编辑:澄清一下,在main()方法中,我可以这样做:

SomeOtherClass myClass=new SomeOtherClass();

然后我可以这样做:

myClass.someMethod();

但是,在myClass对象中,我如何从实例化myClass对象的入口类中执行方法/检索?

3 个答案:

答案 0 :(得分:2)

为实例化myData实例提供访问权限的类的最佳方法是在创建时将其传递给构造函数。

然后,在构造函数中,您可以将ArrayList保存到类的成员变量中。

例如,您的对象构造函数将如下所示:

private ArrayList<String> myData;

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

答案 1 :(得分:2)

听起来你的入口点在调用其他类时仍然是静态的,但是你的ArrayList是它的实例的成员。你需要离开静态世界并进入实例。

我将你的主要方法重构为一个私有的construtor,并放入一个新的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..!
    }
}

答案 2 :(得分:1)

包含main()的类只是一个普通的类。在您的情况下,您必须myData public和可能static(或者,当然,添加访问者)。就像你和其他任何一个班级一样。

您还可以将Entry对象传递给其他类,如下所示:

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