Java 如何转换对象数组?

Java 如何转换对象数组?,java,jakarta-ee,arraylist,Java,Jakarta Ee,Arraylist,我是java新手,正在使用netbeans探索JavaEE应用程序 我有密码: userbean中的方法: public List userList() { Query q = em.createNativeQuery("select username,address from tbuser"); Iterator i = q.getResultList.iterator; ArrayList<UserState> userinfo = new ArrayList&

我是java新手,正在使用netbeans探索JavaEE应用程序

我有密码:

userbean中的方法:

public List userList() {

  Query q = em.createNativeQuery("select username,address from tbuser");

  Iterator i = q.getResultList.iterator;

  ArrayList<UserState> userinfo = new ArrayList<UserState>();

  while (i.hasNext()) {

    Vector result = (Vector) i.next(); // <- HERE

    UserState us = new UserState();

    us.setName((String) result.get(0));

    us.setAddress((String) result.get(1));

    userinfo.add(us);

  }

  return userinfo;

}
公共列表用户列表(){
Query q=em.createNativeQuery(“从tbuser中选择用户名、地址”);
迭代器i=q.getResultList.Iterator;
ArrayList userinfo=新的ArrayList();
while(i.hasNext()){

Vector result=(Vector)i.next();//我怀疑代码是否是这样工作的,诸如
hasNext()
之类的方法缺少括号。如果您复制了代码,请再次复制,因为让我们猜测您的代码不会提高答案的质量

您的问题是希望从向量中访问元素。但向量中对象的类型不是
Vector
,而是另一种类型的集合。您希望检索此向量的元素(这很好),但尝试将其强制转换为
Vector
,但失败


由于我无法在运行时看到向量中将包含哪种类型的对象,因此首先可以在当前错误发生的行之前使用
System.out.println(I.next().getClass().getCanonicalName());
。这将打印向量元素的类型。

嗯,最好是直接在JPA查询中创建DTO:

public List userList() {

  Query q = em.createNativeQuery("SELECT new UserState(username,address) FROM tbuser");

  return q.getResultList();

}

类似这样的内容(这是未验证的代码)

此代码工作不正常,至少有两个错误导致此代码无法编译。请将其替换为实际编译的代码,并确保其格式正确(请阅读编辑器旁边的格式帮助)。
Vector
是一个旧版Java 1.0类。因为Java 1.2(已经推出十多年了),这里有改进的
列表
。请确保您没有阅读太旧或太差的教程,例如(颤栗)roseindia.net……我们没有提到的教程。