如何在集合类中使用它

时间:2016-08-10 14:10:28

标签: java list collections this

如何使用THIS关键字来引用类继承自ArrayList的类中的集合。我在设计时遇到错误,IDE不允许我编译代码。

public class Company{

   private EmployeeCollection employees;

   public Company(){
      this.employees = new EmployeeCollection();
      this.employees.add(new Employee());
      this.employees.add(new Employee());
      this.employees.add(new Employee());
      this.employees.add(new Employee());
      this.employees.add(new Employee());
   }

   public void MyMethod(){
      Employee fourthEmployee = employees.getFourth();
   }
}


public class EmployeeCollection extends ArrayList<Employee>{

   public Employee getFourth(){
      return this[3];  //<-- Error
   }

   public Employe getEmployee(int id){
      for(int i = 0; i< this.size(); i++){ //<-- Error
          if(id == this[i].id){  //<-- Error
             return this[i]; //<-- Error
          }
      }
   }

}

通常在C#中我可以做这样的事情

    public object test(int id)
    {
        for (int i = 0; i < this.Count; i++)
        {
            if (this[i].ID == id)
            {
                return this[i];
            }
        }
        return null;
    }

2 个答案:

答案 0 :(得分:4)

您可以使用this关键字,但问题是您正在使用数组访问语法,这在Java中无效。将其替换为get方法的调用。

this.get(i)

答案 1 :(得分:1)

ArrayList的支持Object[]是私有的,因此您无法继承它。如果可以的话,你会像elementData[x]那样引用它。

只需调用this.get(x)即可从数组中获取元素。

但是,从设计角度来看,您最好制作一个包含ArrayList的装饰器类,并以您需要的方式对其进行操作。