写了两个aglet,报了个莫名的错。。
public class TestA extends Aglet{
 
   public void run()
   { 
     Vector a = new Vector();     a.add("atp://localhost:1234");  
     a.add(new QueryTask("atp://localhost:4434","a","select * from student"));     this.getAgletContext().createAglet(null, "TestB", a);
   }
}
public class TestB extends Aglet{
   public void onCreation(Object init) {
     Vector taskList = (Vector) init;
     String domain = (String) taskList.elementAt(0);
     QueryTask next = (QueryTask) taskList.elementAt(1);
   }
}编译通过了,在Tahiti运行时报下面的错
        java.lang.ClassCastException: FirE.QueryTask
它说QueryTask next = (QueryTask) taskList.elementAt(1);这句话的类型转换有问题。。
可以看了很久没发现有错误啊。。
我 System.out.println(taskList.elementAt(1));
看到的是 FirE.QueryTask@*****.......
请高人指导啊

解决方案 »

  1.   

       a.add("atp://localhost:1234");  
    这个加的是 字符串吧
      

  2.   

    elementAt看看这个是否是返回object类型
      

  3.   

    taskList.elementAt(1)).toString()
    taskList.elementAt()的返回对象是不是转换一下再输出其属性啊。呵呵
      

  4.   

    不好意思,我看错了,
      public void onCreation(Object init) {
    你能确定Object传进来的就是那个Vector
      

  5.   

    to laoror...加的是String的按creatAglet()的说明,传过来的就是那个Vector
    to Sunny_Good ....编译就提示返回Object,不类型转换编译就出错to lzrzhao。上面只是整个程序的一小部分,我是想用到Vector里的QueryTask来初始话TestB的,
    可是就是类型转换不了。。
      

  6.   

    再做了点测试
    QueryTask kkk = new QueryTask("atp://localhost:4434","a","select * from student");System.out.println(taskList.elementAt(1).getclass());
    System.out.println(kkk.getclass());输出结果是:
    class FirE.QueryTask 
    class FirE.QueryTask 这就彻底不明白了还有public class QueryTask implements Serializable{}
    QueryTask 里也定义了serialVersionUID,不知道是否有影响
    望高人指教啊 
      
      

  7.   

    最大的可能性是:不同的包中存在相同的类名
    你检查一下你的Import
      

  8.   

    to mayuanfei你是说其他包里也有QueryTask?
    我检查了一下,我自己建的两个包的确有一对同名的类,之后就改名了,已经确保自己建的两个包没有同名的类了,
    可是还是报错我快被它逼疯了