gpt4 book ai didi

java - 不兼容的类型 - 使用泛型时发现对象

转载 作者:行者123 更新时间:2023-12-01 18:45:42 26 4
gpt4 key购买 nike

我遇到一个问题,以下循环抛出错误 Incompatible types: Required: Workstation, Found: java.lang.Object .

随着所有内容都被键入,我无法理解为什么它找到一个对象而不是键入的对象。

private static WorkflowProcess getWorkflowProcessByWorkstationRecursive(Collection<WorkflowProcess> workflowProcesses) {
for (WorkflowProcess workflowProcess : workflowProcesses) {
for (Workstation workstation : workflowProcess.getWorkstations()) //ERROR IS HERE

WorkflowProcess.java

abstract public class WorkflowProcess<WorkstationType extends Workstation> {

private ArrayList<WorkstationType> workstationList = new ArrayList<WorkstationType>();

public ArrayList<WorkstationType> getWorkstations() {
return workstationList;
}

ServerWorkflowProcess.java

abstract public class ServerWorkflowProcess extends WorkflowProcess<ServerWorkstation> {

ServerWorkstation.java

abstract public class ServerWorkstation extends Workstation<ServerWorkflowProcess> {

它有点复杂,但本质上类层次结构如下所示:

SpecificWorkflowProcess延伸TypeOfWorkflowProcess<TypeOfWorkstaton>延伸WorkflowProcess

SpecificWorkstation延伸TypeOfWorkstation<TypeOfWorkflowProcess>延伸Workstation

WorkflowProcessesWorkstation =一对多

最佳答案

问题在于您使用的是 raw 类型 WorkflowProcess。这意味着您获得的 API 实际上是普通 API 的删除,因此 getWorkstations 的返回类型只是 ArrayList

您可以轻松解决此问题:

private static WorkflowProcess getWorkflowProcessByWorkstationRecursive(
Collection<WorkflowProcess<?>> workflowProcesses) {
for (WorkflowProcess<?> workflowProcess : workflowProcesses) {
..
}
}

通过使用通配符,您基本上是在说“我知道这里涉及泛型,但我实际上并不介意集合中的 WorkstationType 类型参数是什么”。

关于java - 不兼容的类型 - 使用泛型时发现对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com