java - 空白的最终字段 conn 可能尚未在非最终成员上初始化
问题描述
所以我有这个接口 QueryAndRetrieval 并且我想强制实现它的每个类都有一些变量以及一些非常简单的方法,但是如果我尝试将一个变量定义为第 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 告诉我
空白的最终字段 conn 可能尚未初始化
但是界面中没有最终字段。谁能告诉我为什么会发生这种情况以及如何解决?请假设界面中存在所有必要且正确的导入。
解决方案
在 Java 中,接口指定了所有实现者必须响应的 API。他们如何做到这一点取决于实现,因此在实现者上强制一个字段是没有意义的。
如果你想提供一些易于实现的支持,方法是使用接口和抽象基类——例如
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 开始,接口也可以提供默认方法,但您仍然不能在接口中声明成员变量,因此这些默认方法仍然不能使用“抽象”成员。
推荐阅读
- angular - ng 添加 @angular/pwa 时出错
- c# - 使用二维数据和 MVVM 绑定到 DataGrid
- python - 与 tensorflow-gpu 1.4 一起使用的 keras 版本
- c# - 如何在 ASP.NET Core 集成测试中覆盖来自其他容器的 DI 注册
- ios - Swift - CollectionViewCell 边框错误或不完整
- azure-devops - VSTS Windows 机器文件复制 robocopy 未找到
- sql - 如何获取列值的总和作为 SQL 结果集中的新列
- javascript - 如何更改猫头鹰轮播中的视频背景图像?
- javascript - 不稳定的鼠标进入/鼠标离开子菜单
- r - R: na 在 ifelse