Byte buddy JavaConstant.Dynamic.ofInvocation()中的类型可分配性是否过于严格?

Byte buddy JavaConstant.Dynamic.ofInvocation()中的类型可分配性是否过于严格?,byte-buddy,Byte Buddy,我读过,现在正在用JavaConstant.Dynamic做一些非常糟糕的事情。主要是我对它的工作原理有所了解 作为这些可怕实验的一部分,我正在将一个非常量数组转换为一个JavaConstants数组。然后我调用JavaConstant.Dynamic.OF调用(一些方法,它接受事物的变量) 例如,类似这样的事情: static final JavaConstant toJavaConstant(final Glorp[] glorps) { final JavaConstant[] jav

我读过,现在正在用
JavaConstant.Dynamic
做一些非常糟糕的事情。主要是我对它的工作原理有所了解

作为这些可怕实验的一部分,我正在将一个非常量数组转换为一个
JavaConstant
s数组。然后我调用
JavaConstant.Dynamic.OF调用(一些方法,它接受事物的变量)

例如,类似这样的事情:

static final JavaConstant toJavaConstant(final Glorp[] glorps) {
  final JavaConstant[] javaConstants = new JavaConstant[glorps.length];
  for (int i = 0; i < javaConstants.length; i++) {
    javaConstants[i] = toJavaConstant(glorps[i]); // another version of this method that works on scalars
  }
  return JavaConstant.Dynamic.ofInvocation(SOME_METHOD_THAT_ACCEPTS_A_VARARGS_OF_THINGS, javaConstants);
}
static final JavaConstant to JavaConstant(final Glorp[]glorps){
final JavaConstant[]javaConstants=新的JavaConstant[glorps.length];
for(int i=0;i

ByteBuddy在职业调用的
中告诉我,我传递的varargs数组中的
JavaConstant
s中的一个不可分配给
SOME\u方法的参数类型,该方法\u接受\u A\u varargs\u of \u THINGS
。我可以理解这一点,因为严格来说,变量arity方法接受数组作为其最后一个参数,
JavaConstant
不是数组。但是考虑到
SOME\u方法\u接受事物的变化,最终通过
MethodHandle
机制及其所有的参数调整和传播技巧来解决,我想知道:“太多了”吗?ByteBuddy应该考虑引导方法的varargs特性吗?是否有其他方法将任意数量的标量常量作为常量本身创建数组或列表?

是的,这是一个错误,将在1.10.18字节中修复。谢谢你的补丁

是的,这是一个bug,将在1.10.18字节中修复。谢谢你的补丁

事实上,这似乎是一个过于严格的检查。当我编译ByteBuddy版本时,省略了这个检查,一切正常。我很快会提交一个bug。我是为了跟踪它而提交的。我用修复了它。事实上,这似乎是一个太严格的检查。当我编译ByteBuddy版本时,省略了这个检查,一切正常。我很快会提交一个bug。我是为了跟踪它而提交的。我用。