【问题标题】:Java generics on method方法上的 Java 泛型
【发布时间】:2016-02-20 06:03:41
【问题描述】:

可能是一个愚蠢的问题,但我想问一下如何在 Java 中实现这一点。我有一个接口,其方法具有以下签名

public <ComponentType> void attachFacilitiesTable(ComponentType comp);

在我的具体实现中,我想将其覆盖为:

public void attachFacilitiesTable(Node comp);

谢谢

问候, 以西结

【问题讨论】:

  • 使接口(不仅仅是附加方法)通用,然后你可以传递任何你喜欢的&lt;ComponentType&gt;

标签: java generics methods


【解决方案1】:

如果我理解正确的话,ComponentType 是一个基类,而 Node 是扩展它的东西?

如果是这样,那么我认为这是您正在寻找的语法:

public <T extends ComponentType> void attachFacilitiesTable(T comp);

这样,你说,T 是必须从 ComponentType 扩展的泛型类型。

你的例子相当于

public <T> void attachFacilitiesTable(T comp);

其中 T 是一个类型,没有任何限制。您只是使用了不同的“变量”名称,虽然命名为 ComponentType,但与名为 ComponentType 的类没有任何关系。

【讨论】:

  • 嗨 daShader,ComponentType 只是 中的 T、K、E、V 等类型的表示。
  • 哦,在那种情况下,我认为您不能让实现通过 ComponentType 获取任何内容。您的实现基本上需要接受任何类型(因为 ComponentType 可以是任何类型)。泛型仅用于编译时检查。一旦代码被编译,它们就会被简单地删除(这个过程称为类型擦除)和 public void attachFacilitiesTable(ComponentType comp);变为:public void attachFacilitiesTable(Object comp);
  • 我明白了。谢谢 daShader!
猜你喜欢
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多