在Arraylist中找不到.get()

时间:2013-12-13 02:55:26

标签: java arraylist

由于某种原因,.get()在我的代码中不是有效的方法。有人可以指出错误吗? (抱歉不正确的对象名称(不打算共享此代码))

public class Summon_Tester
{
  public static void main (String [] Args)
  {
    Summoned_Bin Bin = new Summoned_Bin();
    Bin.addToBin();
    System.out.println(Bin.get(0));
  }
}

Summoned_Bin代码

import java.util.ArrayList;
public class Summoned_Bin
{
  ArrayList<Summon> Bin = new ArrayList<Summon>();

  Summoned_Bin()
  {
  }

  void addToBin()
  {
    Summon summoned = new Summon();
    int index = 0;
    while (Bin.get(index) != null)
    {
      index++;
    }
    Bin.add(index , summoned );
  }
}

1 个答案:

答案 0 :(得分:3)

Summoned_Bin不是ArrayList,因为它不扩展ArrayList类。相反,它包含一个ArrayList。知道这很好,通过组合而不是继承来增强类是完全可行的,但是不要试图直接在其上使用任何ArrayList方法。

您有两种常见的解决方案:

  1. 你可以让它扩展ArrayList,但我不确定这是最好的事情,或者
  2. 可以为其提供允许外部类提取信息的公共方法。
  3. 例如,给它一个get(...)方法:

    public Summon get(int index) {
      return Bin.get(index);
    }
    

    修改
    正如nachokk正确建议的那样,您需要学习并关注Java code conventions,因为这样做会让其他人更容易理解您的代码。