【问题标题】:Adding to an Array List添加到数组列表
【发布时间】:2014-03-25 12:57:13
【问题描述】:

当我尝试添加到我的数组列表(纵梁)时,出现此错误:

error: no suitable method found for add(Fish)
      stringer.add(f);

在这段代码中:

public class Habitat {

ArrayList<String> stringer = new ArrayList<String>();
int[] fishArr;
public int maxCount=25; 
public int minCount=9; 
public int maxWeight=10; 
public int minWeight=1; 
public int catchProbability=30; //0.3 

public int[] stockUp(){
  int numofF = minCount + (int)(Math.random() * ((maxCount - minCount) + 1));
  for(int i = 0; i<numofF; i++){
     fishArr[i] = minWeight + (int)(Math.random() * ((maxWeight - minWeight) + 1));
  }
  return fishArr;
}


public Habitat(){
  int[] hab;
}

public void addFish(Fish f) {
  stringer.add(f);
}

public void removeFish(Fish f){
  stringer.remove(f);
}

public void printFish(){
  System.out.println(stringer);
}
}

删除工作正常,所以我不明白为什么添加不起作用。我想解释这个问题,所以我不会再犯同样的错误。

【问题讨论】:

  • ArrayList&lt;String&gt;.......................

标签: java methods arraylist


【解决方案1】:

您已声明 List,因此它只需要 String 值,但您正尝试向其添加 Fish 对象...

这违反了您与ArrayList签订的合同

尝试改用ArrayList&lt;Fish&gt; stringer = new ArrayList&lt;Fish&gt;();

查看Generics了解更多详情

【讨论】:

  • 作为操作提到删除工作正常。他可能做错了什么。是这样吗?
  • @NFE List#remove 接受 Object 参数,因此不是泛型合同的一部分。代码不会“工作”,因为它不会编译
【解决方案2】:

stringer 是 String 的 ArrayList,您不能向其中添加 Fish 类型的对象。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2021-12-27
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多