gpt4 book ai didi

java - 为什么只有带前缀返回类型的 java 方法才会执行?

转载 作者:行者123 更新时间:2023-12-01 19:26:06 24 4
gpt4 key购买 nike

我试图理解一些java代码,由于某种原因,这些代码似乎执行其返回类型类(SQLExecutionInfo类),而方法中没有其他内容。也许这就是java的工作原理(即,无论方法体内的内容是否首先执行返回的类的类型??)

该方法开始如下:

protected Query.SQLExecutionInfo compileSingleQDB(StatementExpression statement, boolean keyNeeded) throws StatementException, XMLDBCException {

//body of method
System.out.println("body of method");
}



/*****THE REFERENCED SQLExecutionInfo class is a subclassed within Query.java***********/

public static class SQLExecutionInfo {
public SqlExpression sql = null;
public StatementInfo sInfo = null;
public Mapper mapper = null;
public List childrenQueries = null;
public int[] idPosition = null;
public int idCount = -1;

public SQLExecutionInfo() {
}

public SQLExecutionInfo(SqlExpression sql, Mapper mapper) {
System.out.println("POINT ALPHA2:"+ sql);
this.sql = sql;
this.mapper = mapper;
}

由于某种原因,compileSingleQDB方法(即主体)中没有执行任何内容,但是调用了类SQLExecutionInfo并调用了System.out.println("POINT ALPHA2:"+ sql)。

谁能给我解释一下这是为什么吗?

谢谢,巴勃罗

请让我提供更多信息:

这个让我很困惑,

代码执行全部从这里开始:

     System.out.println("POINT SQL:"+jdbcExecInfo.sql); // Returns null at this stage    
try {
System.out.println("POINT A");
jdbcExecInfo = compileSingleQDB(((Variable) Qdb.get(0)).getExpression(), false);
System.out.println("POINT B");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("POINT SQL:"+jdbcExecInfo.sql); // Somehow now has a value ????

不知怎的,它仍然到达 B 点,即使我输入:Thread.dumpStack();
和 new Error().printStackTrace();

在compileSingleQDB方法中什么也没有出现。

即使我撕掉compileSingleQDB方法的内部并将其替换为:

protected Query.SQLExecutionInfo compileSingleQDB(StatementExpression statement, boolean keyNeeded) throws XQueryException, XMLDBCException {

return null;
}

字符串 jdbcExecInfo.sql 仍然以某种方式获取值

最佳答案

您发布的代码不足以解释该行为。但请注意,类型或类不是“调用”的。 print 语句位于构造函数中,因此显然在某处创建了 SQLExecutionInfo 实例(不,Java 不会自动执行此操作)。当 compileSingleQDB() 末尾的打印语句未执行时发生这种情况可能有多种原因:引发异常、多线程或简单的错误代码。

尝试减少代码以查明问题,直到您自己找到问题,或者您有一个足够小的版本可以完全发布,以便我们可以重现该行为。

关于java - 为什么只有带前缀返回类型的 java 方法才会执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842114/

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