问题如题,具体代码如下:
//首先定义一个Vector类型的records来存服务记录
Vector records = new Vector();
.........
.........
.........
//获得服务
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
for (int i = 0; i < servRecord.length; i++) {
records.addElement(servRecord);//这里就把ServiceRecord类型的变量放入records中
}
}
.........
.........
.........
.........
//使用服务
for(int i=0;i<records.size();i++){
try{
ServiceRecord sr = (ServiceRecord)records.elementAt(i);//就是这一句出错了!!错误提示在下方
if(accessService(sr))
{
//访问到一个可用的服务即可
break;
}
}catch(Exception e)
{
System.out.print(records.elementAt(i).getClass()+"\n");//这一句是为了测试才写出来的
e.printStackTrace();
}
}
运行时的错误提示如下:
class [Lcom.sun.kvem.jsr082.bluetooth.ServiceRecordImpl;//这里是records.elementAt(i).getClass()的显示结果
java.lang.ClassCastException
请问为什么会出这种错误呢?类型应该是匹配的啊~~~
[code="java"]//获得服务
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
for (int i = 0; i < servRecord.length; i++) {
records.addElement([color=red]servRecord[/color]);//这里就把ServiceRecord类型的变量放入records中
}
} [/code]
profee,你这里有些错误,不是servRecord,应该是[color=red]servRecord[i][/color]
搞定 :)