構造函數(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);
}
}