A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周洋 黑马帝   /  2012-3-12 16:27  /  1368 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

不太明白反射中的Constructor类,反射中的Constructor类如何用呢?
视频没听明白  求解

2 个回复

倒序浏览
反射中的构造函数类可以获取某个类的构造函数,并用它创建类的实例:
例如:

1,反射使用无参数的构造函数生成实例
2,反射使用一个字符串参数的构造函数生成实例
3,反射使用一个字符串参数的方法生成方法并调用

package test.jdbc.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class ReflectTest {
    public static void main(String[] args) throws Exception {

        // 反射使用无参数的构造函数生成实例
        Object o = getObj(Bean1.class);
        ((Bean1) o).message();
        // 反射使用一个字符串参数的构造函数生成实例
        o = getObj(Bean1.class, "HELL FIRE");
        ((Bean1) o).message();
        // 反射使用一个字符串参数的方法生成方法并调用
        getObjMed(Bean1.class, "helloworld", "中国");   
    }

    public static Object getObj(Class clazz) throws Exception {
        Constructor con = clazz.getConstructor();
        return con.newInstance();
    }

    public static Object getObj(Class clazz, String param) throws Exception {
        Constructor con = clazz.getConstructor(String.class);
        return con.newInstance(param);
    }

    public static void getObjMed(Class clazz, String name, String param)
            throws Exception {
        Constructor con = clazz.getConstructor(String.class);
        Method m = clazz.getMethod(name, String.class);
        m.invoke(getObj(clazz), param);
    }
}

class Bean1 {
    private String name = null;

    public Bean1() {

    }

    public Bean1(String name) {
        this.name = name;
    }

    public void message() {
        System.out.println(" name is " + this.name);
        System.out.println("Hello world!");
    }

    public void helloworld(String name) {
        System.out.println("hi " + name + " ! This is a nice world!");
    }
}

运行结果:
name is null
Hello world!
name is HELL FIRE
Hello world!
hi 中国 ! This is a nice world!
回复 使用道具 举报
Constructor我们可以理解为:封装了某个类中的所有的构造函数的这么一个类。它的功能主要是创建对象,获取属性值和为属性赋值。因为类中包含有参和无参的构造函数,然后根据参数个数和类型创建相应的对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马