反射,变长参数的构造函数

问题描述

import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;public class Hello {private Integer h;public Hello(int... _t) {int _h = 0;for (int i : _t) {_h += i;}h = new Integer(_h);}public void say() {System.out.println("Hello World! " + h);}public static void main(String[] args) {try {Class<?> clazz = Class.forName("Hello");Constructor<Hello> c = (Constructor<Hello>) clazz.getConstructor(_________);Hello h = (Hello)c.newInstance(3,4,5);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}Constructor<Hello> c = (Constructor<Hello>) clazz.getConstructor(_________);这个地方怎么写?

解决方案

这个要变一下才行int [] a = new int[] {3,4,5}; try { Class<?> clazz = Class.forName("Hello"); Constructor<Hello> c = (Constructor<Hello>) clazz.getConstructor(int[].class); Hello h = (Hello)c.newInstance(a); h.say(); } catch.......

时间: 2024-10-28 21:26:16

反射,变长参数的构造函数的相关文章

C++中的变长参数深入理解_C 语言

前言 在吸进的一个项目中为了使用共享内存和自定义内存池,我们自己定义了MemNew函数,且在函数内部对于非pod类型自动执行构造函数.在需要的地方调用自定义的MemNew函数.这样就带来一个问题,使用stl的类都有默认构造函数,以及复制构造函数等.但使用共享内存和内存池的类可能没有默认构造函数,而是定义了多个参数的构造函数,于是如何将参数传入MemNew函数便成了问题. 一.变长参数函数 首先回顾一下较多使用的变长参数函数,最经典的便是printf. extern int printf(cons

J2SE5.0 实例---变长参数

j2se 变长参数(Varargs)与泛型一样,变长参数是C++中有而Java中没有的一种语言特性,在过去如果我们想向一个函数传递可变数量的函数,就必须首先将这些参数放入一个数组中,然后将数组传递给函数.就如同下面所作的一样: Object[] arguments = { 640, "kb", "anybody", "Bill Gates" }; String result = MessageFormat.format(      "{

Spark UDF变长参数的二三事儿

在复杂业务逻辑中,我们经常会用到Spark的UDF,当一个UDF需要传入多列的内容并进行处理时,UDF的传参该怎么做呢? 下面通过变长参数引出,逐一介绍三种可行方法以及一些不可行的尝试... 引子 变长参数对于我们来说并不陌生,在Java里我们这么写 public void varArgs(String... args)  在Scala里我们这么写 def varArgs(cols: String*): String  而在Spark里,很多时候我们有自己的业务逻辑,现成的functions满足

Lua学习笔记之函数、变长参数、closure(闭包)、select等_Lua

1. Lua函数支持多返回值,但并不是每次调用函数返回的全部值都会被使用. 有一条规则是只有当函数调用是表达式最后一个元素时,才会使用它的全部返回值.看代码: 复制代码 代码如下: --string.find函数返回两个值,:被查找子串的开始索引和结束索引  s,e = string.find("Lua program language","Lua")  print(s,e)  --> 1    3    --如果找不到,则输出nil和nil  s,e = s

java-基础-变长参数

在Java5 中提供了变长参数(varargs),也就是在方法定义中可以使用个数不确定的参数,对于同一方法可以使用不同个数的参数调用. 可变长参数的定义 print(String... args){ ... } print(); print("hello"); print("hello","lisi"); print("hello","张三", "alexia") 在调用方法的时候,如果

C/C++变长参数宏(Variadic Macros)

A macro can be declared to accept a variable number of arguments much as a function can. The syntax for defining the macro is similar to that of a function. Here is an example: #define eprintf(...) fprintf (stderr, __VA_ARGS__) This kind of macro is

代码-关于可变长参数列表的几个问题

问题描述 关于可变长参数列表的几个问题 比如 public static void printMax(double...numbers) 如果要运用到代码中是什么意思? 还有这几个方法声明错在哪里? public static void print(String...strings, double...numbers) public static void print(double...numbers, String name) public static double...print(doub

JDK5.0新特性系列---5.可变长参数Varargs

      /**  * 在J2SE5.0之前,当传入到方法的参数个数不固定时,经常采用数组的方式传递参数  * 在J2SE5.0之后,可以使用可变长参数的我给方法传递参数  */ /**  * 在参数类型和参数名之间使用"..."(三个英文的点),表示该参数为可变长的  * 通过新的for循环读取可变长参数中的值  * 一个方法里最多只能有一个变长参数,而且这个变长参数一定要放在参数表的最后一个参数 */ import static java.lang.System.*; publi

C++模板介绍:什么是变长模板函数

最近的C++语言标准有些更进一步的复杂特性,诸如加上了变长模板.我在尝试理解这个特性的过程中 的一个最大的问题是,没有足够简单的代码示例来说明到底变长模板是如何使用和起作用的. 以下是 我的一个基本样例来说明变长模板: template <class ...A> int func(A... arg) {    return sizeof...(arg); } int main(void) {    return func (1,2,3,4,5,6); } 首要介绍的是一些术语: 一个模板参数现