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);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章