gpt4 book ai didi

java - Java中的方法调用语法

转载 作者:行者123 更新时间:2023-12-01 16:39:18 26 4
gpt4 key购买 nike

我是Java新手。我有 2 个问题。
问题 1:当尝试通过构造函数调用创建 objDummy 时,
为什么没有分号?
怎样才能额外调用 init() 呢?

问题2:为什么注释行“构造函数结束”处有分号?
它是Java语法的一部分吗?

public abstract class A {
private static final A createDummy() {
// what is the meaning of the following syntax? Qn. 1
if (objDummy == null) {
objDummy = new A (null, null, null){
final void init(String a, String b, Object[][] cArray) {
}

public final boolean isSend() {
return false;
}
// Question 2: format
}; //constructor ends
}//if ends
return objDummy;
} // function createDummy ends
}//class ends

最佳答案

Question 1: When objDummy is attempted to be created via a constructor call, Why is there no semi-colon?

有,这就是您在问题 2 中询问的问题。

你拥有的是 anonymous class (从new A(null, null, null) {开始到};,您引用问题2)。这是动态创建一个类,调用其构造函数,并返回结果实例,该实例被分配给 objDummy

How can there be an additional call to init()?

init在那里没有被调用,而是在匿名类中定义的。语法一开始可能有点令人困惑,但是一旦您意识到它正在定义一个类,它就会变得更清晰。

可以大致重写如下:

public abstract class A {

private static final A createDummy() {
if (objDummy == null) {
objDummy = new ASubclass(null, null, null);
}
return objDummy;
}

private static class ASubclass extends A {
final void init(String a, String b, Object[][] cArray) {
}

public final boolean isSend() {
return false;
}
}
}

同样,这完全相同(并且它不会编译,但原始代码也不会编译;缺少构造函数,缺少 objDummy 的声明),但希望它澄清了少量。详细信息请参阅链接。这是一个猜测构造函数的版本,编译:

public abstract class A {
private static A objDummy;

A(String a, String b, Object[][] cArray) {
}

private static final A createDummy() {
if (objDummy == null) {
objDummy = new ASubclass(null, null, null);
}
return objDummy;
}

private static class ASubclass extends A {
ASubclass(String a, String b, Object[][] cArray) {
super(a, b, cArray);
}

final void init(String a, String b, Object[][] cArray) {
}

public final boolean isSend() {
return false;
}
}
}

关于java - Java中的方法调用语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5661456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com