【发布时间】: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<T,R>和BiFunction<T,U,R>(而不仅仅是Function<T..., R>或其他)的原因。