参考麻烦

时间:2012-11-30 23:18:38

标签: java reference parameter-passing

我遇到以下代码时遇到问题。让我来看看代码正在做什么或打算做什么。 createZoo方法执行以下操作:

  1. 它会创建一个Cage个对象
  2. 的数组
  3. 为此阵列的每个索引添加一个由两个动物对象组成的匹配对象
  4. newZoo.add(cage[i]) - 这会将笼子对象传递给Zoo类中的add方法。它被添加到Zoo类中的列表中。
  5. 当我在Zoo类中访问此列表以检索笼对象时,就会出现问题。检索到的笼子对象是不正确的。很抱歉这里含糊不清,但我认为问题在于上面第3点,当我将cage[i]参数传递给List<Cage>类中的Zoo笼子时。我应该通过索引吗?

    感谢。

     class algo{
    
        private int counter = 15;
        private Zoo newZoo = new Zoo();
    
    
        public void createZoo() {
    
            Cage[] cage = new Cage[counter];
    
            //initialize cage array with cage objects
            initializeCageArray(cage);
    
            while(counter>0) //outer while loop
            for(int i =0; i<counter; i++)
            {
    
    
                for(int x = 0,y = end of array;x<somecounter; x++, y--)
                {
                    Animal animala = Animal.get(x)
                    Animal animalb = Animal.get(y);
    
    
                    cage[i].add(new MatingPair(animala, animalb));
    
    
                }
    
                //adds cage object to list container in zoo class
                //Am I passing the wrong thing here - maybe I need to pass an index?
                 newZoo.add(cage[i]);        
    
                --counter;
    
            }
    
    
    
    
        }
    

1 个答案:

答案 0 :(得分:0)

Cage REFERENCE 传递给Zoo完全没问题,而且最好将索引传递给{{} 1}}。

如果cages[]类想要对Zoo对象做某事(据说打开所有的笼子!),那么现在想一想,那么他们如何仅使用{{Cage来访问Cage的对象1}}。您将以某种方式将index的整个数组访问cages[]

如果你直接通过Zoo的引用会更好,至于操纵笼子,你需要参考它。

希望它有意义。