0 0

如何用反射来构造一个一个参数的对象,但我要用null来构造3

因为用null作为参数并用反射来构造对象时是调用的默认构造函数。但要反射的类中没有默认构造函数。而且这个一个参数的构造函数的参数类型是不确定的。所以我想用null来调用。但如何做到呢?

问题补充:
chen_yongkai 写道
		Class clazz=null;//自己获取类型
		Constructor c=clazz.getConstructors()[0];//如果就一个构造函数
		Class[] paraTypes=c.getParameterTypes();//构造函数的参数类型
		Class paraType=paraTypes[0];//一个参数的类型

什么意思?知道构造函数参数的类型又怎么构造对象呢?

public Class Test {
public Test(Integer i) {
        if (i == null)
            System.out.println("args is null!");
    }
}

public static void main(final String[] args) throws Exception {
	    Constructor ctor = Test.class.getConstructors()[0];
        Class cls = (ctor.getParameterTypes()[0]);
        ctor.newInstance(null);// how ??
}


问题补充:
chen_yongkai 写道
public static void main(final String[] args) throws Exception {   
        Constructor ctor = Test.class.getConstructors()[0];   
        Class cls = (ctor.getParameterTypes()[0]);   
        ctor.newInstance(cls.newInstance());// how ??   
}  

我说的是要用null作为参数传入来构造对象。你这里是用实际的对象啊。
2012年1月09日 12:39

3个答案 按时间排序 按投票排序

0 0

采纳的答案

import java.lang.reflect.Constructor;

public class Test {
	public Test(Integer i) {
		if (i == null)
			System.out.println("args is null!");
	}

	public static void main(String[] args) throws Exception {
		Constructor cons = Test.class.getConstructors()[0];
		Class type = (cons.getParameterTypes()[0]);
		Object para = type.cast(null);//这样就能满足你的要求了
		cons.newInstance(para);// 用null做参数,如果构造函数有校验可能通过不了,而且对数据的完整性有影响,不推荐。
	}

}

2012年1月10日 09:42
0 0

public static void main(final String[] args) throws Exception {   
        Constructor ctor = Test.class.getConstructors()[0];   
        Class cls = (ctor.getParameterTypes()[0]);   
        ctor.newInstance(cls.newInstance());// how ??   
}  

2012年1月10日 00:06
0 0

		Class clazz=null;//自己获取类型
		Constructor c=clazz.getConstructors()[0];//如果就一个构造函数
		Class[] paraTypes=c.getParameterTypes();//构造函数的参数类型
		Class paraType=paraTypes[0];//一个参数的类型

2012年1月09日 17:31

相关推荐

    xml与反射.txt

    有了java反射机制,什么都好办了,只需要写一个dao类,四个方法,增删改查,传入不同的对象,就OK啦,无需为每一个 表都创建dao类,反射机制会自动帮我们完成剩下的事情,这就是它的好处。说白了,反射机制就是专门...

    java反射机制学习(二):通过反射获取构造方法并实例化对象

    NULL 博文链接:https://1017401036.iteye.com/blog/2343705

    day021-反射和注解笔记和代码.rar

    //通过构造方法对象去用构造方法创建对象 => 相当于new 一个对象 Object instance = constructor.newInstance(Object 实参);//可以创建任意访问权限的有参或者无参构造 普通方法 Method[] ...

    Java 反射(Reflection) 经典实用例子

    基本的原理和实例3相同,不同点是最后一行,invoke的一个参数是null,因为这是静态方法,不需要借助实例运行。 5. 新建实例 public Object newInstance(String className, Object[] args) throws Exception { ...

    C#中字段、属性、只读、构造函数赋值、反射赋值的问题

    C#中字段、属性和构造函数...这些问题应该在学习C#时的第一节课就应该学到了,我看网上还有人分享说他在面试时遇到面试官问为什么只读字段和只读自动属性可以在构造函数中进行赋值,他没有回答上来,然后他写文章探讨这

    C#中使用反射获取结构体实例及思路

    代码如下:static void Main(string[] args){ ...换种方式,似乎结构体使用反射无法得到其构造函数ConstructorInfo对象 类中有一个隐式的构造函数,而结构没有构造函数 我甚至尝试查找非public构造函数 依然没有 这问

    Spring面试题

    没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring即使一个AOP框架,也是一IOC...

    java反射配置文件实现

    用反射原理 从配置文件中读取数据 public static void main(String[] args) throws Exception{ Properties pro=new Properties(); pro.load(new FileInputStream("fanshe.txt")); //Class c=null; String ...

    JavaScript王者归来part.1 总数2

     6.2.2.2 一个使用Arguments对象接收任意个数参数的例子   6.2.2.3 一个使用Arguments对象模拟函数重载的例子   6.2.3 参数类型匹配--一个利用arguments实现函数重载机制的例子   6.3 函数的调用者和所有者 ...

    JAVA面试题最全集

    ActiveX数据对象,是一个应用级程序接口. 75.四种JDBC方式?目前的版本? 76.EJB有哪几种?区别是什么? 77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何...

    Java-Null-pointer-checker:输入对象不再导致 java 空指针异常

    使用 Java 反射,我们构造了包含所有字段的对象图(如果类扩展了父类,则继承)。 我们使用深度优先搜索遍历,应用模板和访问者设计模式,我们定义在访问每个不同类型的属性(对象图的节点)时要执行的特定操作。 ...

    DWR.xml配置文件说明书(含源码)

    假设有个bean并且通过语句设置成远程可用,有种类型的参数他本身是一个带有setter的java bean,但setter会产生严重的隐患.攻击者可能促使这隐患的发生.通过下面的语句就可以设置但个类的bean converter 要想允许转换...

    Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例(第3部分).pdf

    或者直接采用 null 对象 作为最后一个参数。 2、EarthPlanetApplet 程序代码如下 (1)回顾 Java 中的数组 数组也是一个对象,并且数组也是作为方法的对象引用值来传递的。 Image allImagesArray[]= new Image...

    Java 基础核心总结 +经典算法大全.rar

    获取类的 Class 对象构造类的实例化对象获取-个类的所有信息 获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器(Constructor) 获取注解 通过反射调用方法反射的应用场景 Spring 的 IOC 容器反射 + 抽象...

    深入反射生成数组的详解

    今天在论坛有人问怎样反射生成数组,突然又来了兴致,决定试试其实反射数组最难无非就是数组的初始化和数组的索引了,那么,如何初始化一个数组呢,数组是没有构造函数的,那么用InvokeMember(null, BindingFlags....

    Lua解析器mLua.zip

    并将此缓存的key设置为指定名称new(className, ...)构造一个java实例,参数className是import函数的返回值,后续参数为java构造方法的输入参数invokeStatic(className, methodName, ...)调用一个java的静态方法...

    C#本质论(第3版)

    5.7.5 使用this调用另一个构造器 5.8 静态成员 5.8.1 静态字段 5.8.2 静态方法 5.8.3 静态构造器 5.8.4 静态属性 5.8.5 静态类 5.9 扩展方法 5.10 封装数据 5.10.1 const 5.10.2 readonly 5.11 嵌套类 ...

    net学习笔记及其他代码应用

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    5.7.5 构造器链:使用this调用另一个构造器 168 5.8 静态成员 172 5.8.1 静态字段 172 5.8.2 静态方法 174 5.8.3 静态构造器 175 5.8.4 静态属性 176 5.8.5 静态类 177 5.9 扩展方法 ...

Global site tag (gtag.js) - Google Analytics