- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几门课:
标准类:
WorkflowGraph模型:
public class WorkflowGraphModel<T> implements IWorkflowGraphModel<T>
public WorkflowGraphModel( List<IWorkflowGraphEntry<T>> entries )
{
this.entries = entries;
}
WorkflowGraphEntry:
public class WorkflowGraphEntry<T> implements IWorkflowGraphEntry<T>
特殊实现:
ApprovalStepGraphEntry
public class ApprovalStepGraphEntry extends WorkflowGraphEntry<ApprovalStep>
ApprovalStepGraphModel
public class ApprovalStepGraphModel extends WorkflowGraphModel<ApprovalStepGraphEntry>
public ApprovalStepGraphModel( List<ApprovalStepGraphEntry> stepEntries )
{
super( stepEntries );
}
调用时出错
super( stepEntries );
WorkflowGraphModel (java.util.List>)WorkflowGraphModel
中的内容无法应用于 (java.util.List)
我不知道为什么编译器不知道 ApprovalStepGraphEntry
实现 IWorkflowGraphEntry
。在我看来,泛型已经设置得很好。
最佳答案
类型List <IWorkflowGraphEntry <ApprovalStep>>
不可从 List <ApprovalStepGraphEntry>
分配。你可能应该改变 List <IWorkflowGraphEntry <ApprovalStep>>
至List<? extends IWorkflowGraphEntry <ApprovalStep>>
或类似的东西。
这里解释了为什么上述类型不兼容。让我们考虑一下我们有:
interface A {...}
class B extends A {...}
class B1 extends A {...}
interface C <T> {public void set (T t);}
那么下列说法不正确:
C <A> ca;
C <B> cb = ...;
ca = cb; // Error here
ca.set (new B1 ()); // Correct!
注意一次ca
声明为C <A> ca
,方法ca.set
接受 A
类型的参数因此new B1()
是它的有效值。同时,方法cb.set
接受 B
类型的参数,因此 new B1()
不是此参数的有效值。如果我们能够分配 cb
至ca
,那么我们稍后就可以调用ca.set (new B1())
它将把无效类型的值传递给 set 方法。为了防止这种情况,编译器将 C <A>
视为和C <B>
即使 A
类型也不兼容和B
兼容。
关于java - 嵌套泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15197675/
我是一名优秀的程序员,十分优秀!