Java:从类B中在类A中创建的访问对象

时间:2013-02-14 16:33:15

标签: java object reference

我正在努力访问一个对象,它是来自另一个类的方法。 我写了一些代码来说明我的问题

注意:以下代码不能编译或运行,只是为了解释我的问题。

class MainClass {
    public static void(String[] args) {
        Run r = new Run();
    }
}

class Run {

    Run() {
        Brand cola = new Brand("Coca Cola");
        Brand pepsi = new Brand("Pepsi");

        // Creates the container object "con1" and adds brands to container.
        Container con1 = new Container();
        con1.addToList(cola);
        con1.addToList(pepsi);
    }

}

class Brand {
// In this class I have a method which needs to accsess the con1 object
 containing all the brands and I need to access the method

    public void brandMethod() {
        if(con1.methodExample) {        **// Error here. Can't find "con1".**
            System.out.println("Method example returned true.");
        }
    }

}

class Container {
    // This class is a container-list containing all brands brands

    public boolean methodExample(){
    }
}

我正在努力从Brand类中访问“con1”对象。 如何访问“con1”?

2 个答案:

答案 0 :(得分:1)

我会将Brand称为集合,例如

brand.addTo(collection);

e.g。

public class Brand {
   private Container container;
   public void addTo(Container c) {
      c.addToList(this);
      container = c;
   }
}

然后品牌可以添加自己,并持有对该集合的引用。这确实意味着该品牌提到了一个系列,我不确定这是否真的是你想要的。

稍微好一点的解决方案是在构造Brand时提供容器,然后Brand只将自己添加一次到集合中,并从一开始就引用该集合。 / p>

答案 1 :(得分:0)

您必须使用对Container对象的引用,并对其进行初始化。在错误行之前:

    Container con1 = new Container();  <-- the inicialization by creating a new object.

               ^
               |
               |
       the reference/variable

更新回复评论: 你必须传递实例;通常最常作为方法的参数。我担心你对Java基础知识的研究太少,这个问题有很多错误。

搜索以下概念:

  • 变量及其范围。
  • 局部变量vs实例变量vs静态变量。
  • 方法参数。