请教增强for循环中的一个问题。

demonapple 2013-02-26 05:03:46

package TEST;

import java.util.HashMap;
import java.util.Collection;
import java.util.Iterator;

import TEST.Shift;

public class WorkDate {
private Integer _day;
private HashMap _shifts = new HashMap(7);

public WorkDate(int i){
this();
_day = i;
}

public WorkDate(){
//创建班次
for(int i = 1;i <= 3;i++){
this.addShift(new Shift(i));
}
}

public Integer getDay(){
return _day;
}

public void setDay(Integer d){
_day = d;
}

public void addShift(Shift s){
s.setWorkDate(this);
_shifts.put(s.getNo(), s);
}

public Collection getShifts(){
return _shifts.values();
}

public boolean containsWorker(Worker w){


for(Shift s : this.getShifts())
//Type mismatch: cannot convert from element type Object to Shift
{
if (s.containsWorker(w)){
return true;
}
}
return false;
}
}


报错部分请问该如何修改。


//Shift.java
package TEST;

public class Shift implements Comparable<Shift> {
private Integer _no;

public Shift() {

}

public Shift(int i) {
_no = i;
}

public Integer getNo() {
return _no;
}

public void setNo(Integer i) {
_no = i;
}

private WorkDate _date;

public WorkDate getWorkDate() {
return _date;
}

public void setWorkDate(WorkDate d) {

_date = d;

}

private Worker _driver;
private Worker _assistant1;
private Worker _assistant2;

public Worker getDriver() {
return _driver;
}

public void setDriver(Worker w) {
_driver = w;
}

public Worker getAssistant1() {
return _assistant1;

}

public void setAssistant1(Worker w) {
_assistant1 = w;
}

public Worker getAssistant2() {
return _assistant2;
}

public void setAssistant2(Worker w) {
_assistant2 = w;
}

public boolean containsWorker(Worker w) {

return _driver == w || _assistant1 == w || _assistant2 == w;

}

public boolean isDone() {
return _driver != null && _assistant1 != null && _assistant2 != null;
}

public int compareTo(Shift s) {
int a = this.getWorkDate().getDay() * 10 + _no;
int b = s.getWorkDate().getDay() * 10 + s.getNo();
return a - b;
}


}

...全文
195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
demonapple 2013-02-27
  • 打赏
  • 举报
回复
引用 6 楼 caolipeng_918 的回复:
你需要将this.getShift()获得的Collection对象强制转化成Shift类型。这样既可以。你试一下看了
对的 一转就好了

	public Collection<Shift> getShifts(){ 
		return _shifts.values(); 
		} 
caolipeng_918 2013-02-26
  • 打赏
  • 举报
回复
你需要将this.getShift()获得的Collection对象强制转化成Shift类型。这样既可以。你试一下看了
oZouBianBian 2013-02-26
  • 打赏
  • 举报
回复
先用object收下来,再在循环里面强制类型转换呗
demonapple 2013-02-26
  • 打赏
  • 举报
回复
引用 2 楼 lvzg_005 的回复:
引用 1 楼 skywoodsky 的回复:private HashMap<Integer,Shift> _shifts = new HashMap<Integer,Shift>(7); 试下 使用泛型约束下类型
谢谢楼上两位提供思路,我自己改改看。
demonapple 2013-02-26
  • 打赏
  • 举报
回复
引用 1 楼 skywoodsky 的回复:
private HashMap<Integer,Shift> _shifts = new HashMap<Integer,Shift>(7); 试下
还是同样的错误。。。
lvzg_005 2013-02-26
  • 打赏
  • 举报
回复
引用 1 楼 skywoodsky 的回复:
private HashMap<Integer,Shift> _shifts = new HashMap<Integer,Shift>(7); 试下
使用泛型约束下类型
skywoodsky 2013-02-26
  • 打赏
  • 举报
回复
private HashMap<Integer,Shift> _shifts = new HashMap<Integer,Shift>(7); 试下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧