所以我想在我的入口点类(即程序启动时运行的类(具有public static void main(String args[])
函数))。在该类中我有这个变量:
private ArrayList<String> myData=new ArrayList<String>();
此类实例化另一个类,该类需要能够访问入口点类的myData
成员。怎么能找回这个arraylist?
编辑:澄清一下,在main()
方法中,我可以这样做:
SomeOtherClass myClass=new SomeOtherClass();
然后我可以这样做:
myClass.someMethod();
但是,在myClass
对象中,我如何从实例化myClass
对象的入口类中执行方法/检索?
答案 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
}