[英]Can we invoke a class constructor?
我有两套讲义。 人们将构造函数称为一种方法形式。 另一组注释声称构造函数不是方法。
我个人认为构造函数不是方法。 但是我在constructor
上使用术语invoke
是正确的吗?
我的问题是:我们可以调用java方法。 但是我说“调用构造函数”正确吗?
我访问了以下站点: http : //docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html在构造函数上使用术语invoke
似乎不合适。
:提及(某人或某物)以使人们感到某种方式或具有某种想法
:提及(某物)以支持您的想法
:利用(法律,权利等)
所以是的,我想您可以像调用方法一样调用构造函数。 但是正如Java规范所说
方法调用表达式绝不会调用构造函数
因此只能通过创建对象来调用构造函数:
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。我们不能将其与任何返回类型一起使用,因为构造函数在与“ new”关键字一起调用时隐式返回对象的引用。 2.名称应始终与类名称相同。 3.我们不能对构造函数使用任何访问说明符。
因此,您可以说“调用构造函数” 。
有关更多详细信息,您可以参考以下链接-http: //docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.