所以我有这个在 glassfish 服务器中运行的 web 服务,并连接到一个 mysql 数据库,其中包含几个 webmethods,其中包括:
@WebMethod(operationName = "getDrops")
public Dropslog[] getDrops(@WebParam(name = "User") Users user, @WebParam(name = "MonsterID") int monsterID){
return dbmg.getDrops(user, monsterID);
}
如您所见,此方法通过从另一个类调用此方法返回 Dropslog[] 类型的变量:
public Dropslog[] getDrops(Users user, int monsterID){
Dropslog drop;
Criteria criteria = session.createCriteria(Dropslog.class);
criteria.add(Restrictions.eq("monsterId", monsterID));
drop = (Dropslog) criteria.uniqueResult();
List<Dropslog> drops = (List<Dropslog>) criteria.list();
Dropslog[] dropsArray = new Dropslog[drops.size()];
dropsArray = drops.toArray(dropsArray);
return dropsArray;
}
此方法以前返回drops
的类型是,List<Dropslog>
但我在阅读此处时更改了它,因为 SOAP Web 服务无法返回列表。
现在客户端的应用程序使用以下代码调用 webmethod getDrops:
public static Dropslog[] getDrops(webservice.Users user, int monsterID){
webservice.PvmWs service = new webservice.PvmWs();
webservice.ClientHandler port = service.getClientHandlerPort();
return port.getDrops(user, monsterID);
}
因此,从您所看到的情况来看,这应该可以完美地工作,但事实并非如此,相反,我在最后一个方法的返回行上标记了 NetBeans 上的不兼容类型错误提示:
incompatible types
required: Dropslog[]
found: List<Dropslog>
令人惊讶的是,当我按照 NetBeans 的建议对其进行更改时,它确实可以编译和工作。我想知道为什么会发生这种情况,如果它是某种错误或 netbeans 正在使用旧文件来编译代码,或者 java 是否进行了某种自动转换?