日期:2014-05-20  浏览次数:20867 次

java 运用反射时,为什么要显示的声明默认构造方法
本帖最后由 zwm0800 于 2013-01-25 16:48:15 编辑
更位大神帮忙看一下,为什么在用方式二的时候需要显示的声明默认构造方法?????
import java.lang.reflect.Field;

public class Test
{
    public Object test(Object object) throws Exception
    {
        Class<?> classType = object.getClass();
        // 方式一:
        Object sample = Sample.class.newInstance();
        // 方式二,为什么需要显示的声明默认构造方法:
        //Object sample = classType.getConstructor(new Class[] {}).newInstance(new Object[] {});
        Field field = classType.getDeclaredField("name");
        field.set(sample, "tom");

        return sample;
    }

    public static void main(String[] args) throws Exception
    {
        System.out.println(new Test().test(new Sample()));
    }
}

class Sample
{
    String name;

    // public Sample()
    // {
    //
    // }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String toString()
    {
        return this.name;
    }
}

              
java 反射

------解决方案--------------------
你在调用无惨构造函数,他当然需要存在