首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请问增强for循环中的一个有关问题

2013-03-04 
请教增强for循环中的一个问题。本帖最后由 demonapple 于 2013-02-26 17:05:09 编辑package TESTimport ja

请教增强for循环中的一个问题。
本帖最后由 demonapple 于 2013-02-26 17:05:09 编辑


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;
}


}


[解决办法]
private HashMap<Integer,Shift> _shifts = new HashMap<Integer,Shift>(7);
试下
[解决办法]
引用:
private HashMap<Integer,Shift> _shifts = new HashMap<Integer,Shift>(7);
试下

使用泛型约束下类型
[解决办法]
先用object收下来,再在循环里面强制类型转换呗
[解决办法]
你需要将this.getShift()获得的Collection对象强制转化成Shift类型。这样既可以。你试一下看了

热点排行