Merriam Webster describes invoke
like this:
:提(某人或某事),企圖使人們感到某種方式或在他們的心中有一定的想法
:在支持指(東西)你的想法
:利用(法律,右等)的
所以,是的,我會說你可以調用一個反面結構很像你可以調用一個方法。但隨着the java specifcation說
構造函數永遠不會被方法調用表達式調用
這樣的構造只能通過創建對象即可調用:
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class InvokeConstructor {
public InvokeConstructor() {
System.out.println("constructor1");
}
public InvokeConstructor(final boolean unused) {
System.out.println("constructor2");
}
public static void main(String[] args) {
new InvokeConstructor();
new InvokeConstructor(false);
// And using reflection:
try {
Constructor<InvokeConstructor> constructor1 = InvokeConstructor.class.getConstructor();
constructor1.newInstance();
Constructor<InvokeConstructor> constructor2 = InvokeConstructor.class.getConstructor(Boolean.TYPE);
constructor2.newInstance(Boolean.FALSE);
} catch (NoSuchMethodException e) {
e.printStackTrace(); // TODO: implement catch
} catch (InvocationTargetException e) {
e.printStackTrace(); // TODO: implement catch
} catch (InstantiationException e) {
e.printStackTrace(); // TODO: implement catch
} catch (IllegalAccessException e) {
e.printStackTrace(); // TODO: implement catch
}
}
}
這只是爭論的語義。但是FWIW,JLS會談到「調用構造函數」(例如http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8)。 – 2014-11-01 21:58:03
您不像普通方法那樣調用構造函數,但是運算符'new'調用它。 – 5gon12eder 2014-11-01 22:02:14