我有两套讲义。一个人将构造函数称为一种方法。另一组说明声称构造函数不是方法。
我个人认为构造函数不是方法。但是,我在invoke
上使用constructor
一词是否正确?
我的问题是:我们可以调用java方法。但是我说“调用构造函数”是正确的吗?
我访问过这个网站:http://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html
在构造函数上使用术语invoke
看起来不合适吗?
答案 0 :(得分:1)
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
}
}
}
答案 1 :(得分:0)
构造函数是一种方法,它具有一些特权,例如 - 1.我们不能使用任何返回类型,因为隐式构造函数在与&#34; new&#34; 关键字一起调用时返回对象的引用。 2.名称应始终与班级名称相同。 3.我们不能使用构造函数的任何访问说明符。
所以,你可以说&#34;调用一个构造函数&#34; 。
有关详细信息,请参阅此链接 - http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html