【问题标题】:Java variable number of genericsJava 可变数量的泛型
【发布时间】:2017-08-10 18:59:12
【问题描述】:

我需要一种方法来实现一个可以接收可变数量的泛型参数的类。基本上,我需要一种方法来组合以下类:

class IncidentReporter1<A> {
    public void reportIncident(A a) {
    }
}
class IncidentReporter2<A, B> {
    public void reportIncident(A a, B b) {
    }
}
class IncidentReporter3<A, B, C> {
    public void reportIncident(A a, B b, C c) {
    }
}
class IncidentReporter4<A, B, C, D> {
    public void reportIncident(A a, B b, C c, D d) {
    }
}

进入一个IncidentReporter 类。我知道我可以在运行时接收 Class[] 并使用它,但我想知道在 java 中是否有更好的本地方式来执行此操作。

【问题讨论】:

  • 如果你想将所有4个合二为一,那么你需要那个4-arg方法,那么你需要所有4个类型参数;为什么不将所有 4 种方法都添加到具有 4 个类型参数的类中?
  • 这个问题有一个X/Y problem花束
  • 将来我可能需要 20 个参数。我原本打算只使用 Object[] 来传输没有任何泛型的数据,但我想我不妨尝试使用泛型来简化转换等
  • 其实这更像是一个元组问题。
  • 无法完成。你所拥有的就是最好的。这就是为什么 Java 8 包含 Function&lt;T,R&gt; 和 BiFunction&lt;T,U,R&gt;(而不仅仅是 Function&lt;T..., R&gt; 或其他)的原因。

标签: java class generics


【解决方案1】:

我可能会这样写:

public class IncidentReporter {

public void reportIncident(Class<?>... differentClasses) {

}

}

我觉得干净多了。

【讨论】:

  • 我做了同样的事情,但使用了 object[] 因为我传输的数据不仅仅是类类型。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多