如何使用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;
}
答案 0 :(得分:4)
您可以使用this
关键字,但问题是您正在使用数组访问语法,这在Java中无效。将其替换为get
方法的调用。
this.get(i)
答案 1 :(得分:1)
ArrayList
的支持Object[]
是私有的,因此您无法继承它。如果可以的话,你会像elementData[x]
那样引用它。
只需调用this.get(x)
即可从数组中获取元素。
但是,从设计角度来看,您最好制作一个包含ArrayList
的装饰器类,并以您需要的方式对其进行操作。