我有以下代码:
Object result = joinPoint.proceed();
if(result instanceof Publisher) {
return (Publisher<?>)result;
}
if(result instanceof Iterable<?>) {
return Flux.fromIterable((Iterable<?>)result);
}
if(result.getClass().isArray()) {
//ERROR HERE: no instance(s) of type variable(s) T exist so that Object conforms to T[]
return Flux.fromArray(result);
}
我想将result
作为数组传递给Flux.fromArray
,但我不知道如何将其强制转换为数组?或者有更好的解决方案吗?我想返回一个Publisher
1条答案
按热度按时间pjngdqdw1#
Flux不适用于基元类型,所以如果你想使用,例如
Flux.fromArray()
,那么你应该把你的基元数组转换成对象数组。为了简化转换,
org.apache.commons.lang3.ArrayUtils
中有ArrayUtils.toObject()
方法,但它有多种实现,具体取决于原语类型:long
、byte
、int
等等。然而,在你的情况下,你必须以某种方式确定数组中值的实际类型。这是可能的,但不是真正好的解决方案,这是因为你真的没有一个好的设计。
实现此目的的方法如下所示:
你的代码:
它会按照你预期的方式工作,然而,正如我所说,它看起来像一个糟糕的设计。