gpt4 book ai didi

java - 空白的 final 字段 conn 可能尚未在非 final 成员上初始化

转载 作者:行者123 更新时间:2023-11-29 04:18:29 24 4
gpt4 key购买 nike

所以我有这个接口(interface) QueryAndRetrieval 并且我想强制实现它的每个类都有一些变量以及一些非常简单的方法,但是如果我尝试将 vaiable 定义为第 5 行的那个

public interface QueryAndRetrieval {

public String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
public String JDBC_URL = "jdbc:derby:CompanyDB;create=true";
public static Connection conn;

public boolean containsEntry(String TableName, Object key);

public static Connection connect() throws SQLException {
return DriverManager.getConnection(JDBC_URL);
}
}

Eclipse 通知我

The blank final field conn may not have been initialized

但是界面中没有任何 final 字段。谁能告诉我为什么会这样以及如何解决?请假设界面中存在所有必要且正确的导入。

最佳答案

在 Java 中,接口(interface) 指定所有实现者必须响应的 API。 他们如何做到这一点取决于实现,因此强加给实现者一个字段是没有意义的。

如果您想提供一些易于实现的支持,方法是使用一个接口(interface)和一个抽象基类——例如

public interface QueryAndRetrieval {

public String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
public String JDBC_URL = "jdbc:derby:CompanyDB;create=true";

public boolean containsEntry(String TableName, Object key);

public abstract Connection connect() throws SQLException;
}

public abstract class QueryAndRetrievalBase {
public Connection conn;

public Connection connect() throws SQLException {
return DriverManager.getConnection(QueryAndRetrieval.JDBC_URL);
}
}

public class MyQueryImpl extends QueryAndRetrievalBase { ... }

请注意,从 Java 8 开始,接口(interface)还可以提供 default methods , 但你仍然不能在接口(interface)中声明成员变量,所以那些默认方法仍然不能使用“抽象”成员。

关于java - 空白的 final 字段 conn 可能尚未在非 final 成员上初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728879/

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