Java:varargs声明了构造函数

布斯费雷拉

我正在尝试使用工厂设计模式来实例化对象。虽然,构造函数具有varargs参数。

public class Foo implements Bar

public Foo(Object... args) {
}

在工厂中,我试图得到这样的构造函数:

private Constructor<Bar> getConstructor(Class<Bar> clazz) {
    return clazz.getDeclaredConstructor(Object.class);
}

但这是行不通的。我也尝试过:

private Constructor<Bar> getConstructor(Class<Bar> clazz) {
    return clazz.getDeclaredConstructor(Object[].class);
}

但是我将失去varargs的0参数功能。

有什么办法吗?

斯坦尼斯拉夫·卢亚诺诺夫(Stanislav Lukyanov)

Varargs参数实际上是一个数组参数,由编译器和某些其他工具进行特殊处理。因此,不能将其用作带有反射的varargs参数-必须将其用作数组。

有更灵活的方法来处理方法-包中的MethodHandlejava.lang.invoke使用方法句柄,您不仅可以调用此方法,还可以转换参数以使用与方法签名不同的类型。

要使用varargs构造函数,您可以执行以下操作:

MethodHandle constructor = MethodHandles.publicLookup().findConstructor(Foo.class, Object[].class);
constructor.invoke(new Object(), 1, "");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

构造函数未设置成员变量,但声明了new

来自分类Dev

在Java构造函数中声明ArrayList

来自分类Dev

Vim查找声明了函数等的位置

来自分类Dev

Java VarArgs声明中的方法声明问题

来自分类Dev

错误:否''在类中声明了成员函数''

来自分类Dev

我是否以错误的方式声明了getpriorityvalues函数?

来自分类Dev

声明构造函数的好处/缺点

来自分类Dev

声明后调用构造函数

来自分类Dev

TypeScript声明文件(函数构造函数)

来自分类Dev

即使声明了全局函数,也要在非对象上调用成员函数prepare()

来自分类Dev

使用Roslyn从ObjectCreationExpressionSyntax获取构造函数声明?

来自分类Dev

MarkupExtension声明中的默认构造函数参数

来自分类Dev

C ++中构造函数的多个声明

来自分类Dev

访问在构造函数中声明的变量

来自分类Dev

在构造函数angular 2中声明属性

来自分类Dev

在构造函数中声明的属性与原型

来自分类Dev

使用Roslyn从ObjectCreationExpressionSyntax获取构造函数声明?

来自分类Dev

C ++中构造函数的多个声明

来自分类Dev

在构造函数angular 2中声明属性

来自分类Dev

Java-我们可以在构造函数中声明对象变量吗?

来自分类Dev

Java-在声明行中对静态数组进行排序(而不是在静态构造函数中)

来自分类Dev

在Java中声明构造函数时出现“缺少方法主体”错误

来自分类Dev

如何在Java构造函数和php mysqli中声明日期,时间和日期时间?

来自分类Dev

如何检查在编译时是否在全局范围内声明了函数

来自分类Dev

如果声明了析构函数,为什么此代码无法编译?

来自分类Dev

“注意:未定义的变量”,但在函数中声明了变量

来自分类Dev

如果在函数中声明了const int,是否需要取消分配它?

来自分类Dev

在函数内部声明了全局数组,但是在调用时不显示值

来自分类Dev

如果声明了析构函数,为什么此代码无法编译?

Related 相关文章

  1. 1

    构造函数未设置成员变量,但声明了new

  2. 2

    在Java构造函数中声明ArrayList

  3. 3

    Vim查找声明了函数等的位置

  4. 4

    Java VarArgs声明中的方法声明问题

  5. 5

    错误:否''在类中声明了成员函数''

  6. 6

    我是否以错误的方式声明了getpriorityvalues函数?

  7. 7

    声明构造函数的好处/缺点

  8. 8

    声明后调用构造函数

  9. 9

    TypeScript声明文件(函数构造函数)

  10. 10

    即使声明了全局函数,也要在非对象上调用成员函数prepare()

  11. 11

    使用Roslyn从ObjectCreationExpressionSyntax获取构造函数声明?

  12. 12

    MarkupExtension声明中的默认构造函数参数

  13. 13

    C ++中构造函数的多个声明

  14. 14

    访问在构造函数中声明的变量

  15. 15

    在构造函数angular 2中声明属性

  16. 16

    在构造函数中声明的属性与原型

  17. 17

    使用Roslyn从ObjectCreationExpressionSyntax获取构造函数声明?

  18. 18

    C ++中构造函数的多个声明

  19. 19

    在构造函数angular 2中声明属性

  20. 20

    Java-我们可以在构造函数中声明对象变量吗?

  21. 21

    Java-在声明行中对静态数组进行排序(而不是在静态构造函数中)

  22. 22

    在Java中声明构造函数时出现“缺少方法主体”错误

  23. 23

    如何在Java构造函数和php mysqli中声明日期,时间和日期时间?

  24. 24

    如何检查在编译时是否在全局范围内声明了函数

  25. 25

    如果声明了析构函数,为什么此代码无法编译?

  26. 26

    “注意:未定义的变量”,但在函数中声明了变量

  27. 27

    如果在函数中声明了const int,是否需要取消分配它?

  28. 28

    在函数内部声明了全局数组,但是在调用时不显示值

  29. 29

    如果声明了析构函数,为什么此代码无法编译?

热门标签

归档