gpt4 book ai didi

java - 与多个通用类型的接口(interface)?

转载 作者:行者123 更新时间:2023-11-29 07:58:19 24 4
gpt4 key购买 nike

这是我的接口(interface)BinaryHeterogenousHyperedge:

public interface BinaryHeterogenousHyperedge
<M extends Vertex<L>, L,T extends Vertex<E>, E>
extends Hyperedge
{
public <T> List<Vertex> search(T centroid ,List<M> allElemntsVertex);
}

搜索方法有两个参数:

  • T 类型的质心顶点(例如 Tag Vertex)
  • M != T 类型的顶点列表(例如图像顶点)

并返回 TM 类型的顶点列表

TagsImagesHyperEdges 实现了这个接口(interface):

public class TagImagesHyperedge
implements BinaryHeterogenousHyperedge
<ImageVertex,Map<String, Instance> ,TagVertex,String>
{

@Override
public <T> List<Vertex> search(T centroid, List<ImageVertex> allElemntsVertex)
{
// TODO Auto-generated method stub
return null;
}
}

为什么不推断类型 T

最佳答案

您正在使用方法定义中的 T 隐藏接口(interface)定义中的 T。 永远不要这样做。它们是不同的、不相关的类型参数,无法从另一个推断出一个。您的方法签名基本上是一种非常困惑的说法:

public List<Vertex> search(Object centroid, List<M> allElementsVertex);

Java 的经验法则:如果只在方法签名中使用一次,则使用方法级类型参数永远没有意义。方法级类型参数对于表达参数类型或返回类型之间的约束很有用。

关于java - 与多个通用类型的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133178/

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