Java 源码 - Constructor 类

构造函数(Constructor)在对象创建或者实例化时候被调用的方法。通常使用该方法来初始化数据成员和所需资源。

源码

package java.lang.reflect;
/**
 * 构造方法类。
 */
public final class Constructor<T> extends Executable {
    /**
     * 返回包含此构造方法的类。
     */
    @Override
    public Class<T> getDeclaringClass() {
        return clazz;
    }

    /**
     * 构造方法名。
     */
    @Override
    public String getName() {
        return getDeclaringClass().getName();
    }

    /**
     * 修饰符。
     */
    @Override
    public int getModifiers() {
        return modifiers;
    }

    /**
     * 获取参数类型。
     */
    @Override
    public Class<?>[] getParameterTypes() {
        return parameterTypes.clone();
    }

    /**
     * 获取异常。
     */
    @Override
    public Class<?>[] getExceptionTypes() {
        return exceptionTypes.clone();
    }

    /**
     * 初始化一个新对象。
     */
    @CallerSensitive
    public T newInstance(Object ... initargs)throws Exception {
        if ((clazz.getModifiers() & Modifier.ENUM) != 0)
            throw new IllegalArgumentException("Cannot reflectively create enum objects");
        ConstructorAccessor ca = constructorAccessor;
        if (ca == null) {
            ca = acquireConstructorAccessor();
        }
        @SuppressWarnings("unchecked")
        T inst = (T) ca.newInstance(initargs);
        return inst;
    }

    /**
     * 获取注解。
     */
    public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
        return super.getAnnotation(annotationClass);
    }

    /**
     * 获取参数上的注解。
     */
    @Override
    public Annotation[][] getParameterAnnotations() {
        return sharedGetParameterAnnotations(parameterTypes, parameterAnnotations);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章