当前位置: 首页 > 知识库问答 >
问题:

奇怪的警告值'x'总是'null'[重复]

经俊茂
2023-03-14

下面的代码返回一个错误,它不会连接到SQlite db。

public class CardDatabase {

    private String dataBaseName;

    public CardDatabase(String dataBaseName) {
        this.dataBaseName = dataBaseName;
    }

    String databaseUrl = "jdbc:sqlite:./" + dataBaseName; // Value 'dataBaseName' is always 'null' 
    SQLiteDataSource dataSource = new SQLiteDataSource();

虽然下面的代码工作得很好。

public class CardDatabase {

    private String dataBaseName;

    public CardDatabase(String dataBaseName) {
        this.dataBaseName = dataBaseName;
    }
    
    SQLiteDataSource dataSource = new SQLiteDataSource();
    String databaseUrl = "jdbc:sqlite:./" + dataBaseName; // swaped two lines

你能帮我了解一下这两个代码之间的区别吗?为什么第一个不能编译?

共有1个答案

夏理
2023-03-14

String databaseUrl=“jdbc:sqlite:./”数据库名 在执行构造函数之前初始化。

这意味着它将始终使用null,因为dataBaseName尚未初始化。

但是可以将初始化移到构造函数中。最好将字段放在构造函数之前,如果您从未重新分配它们,可以将它们设置为final,这意味着不能覆盖:

public class CardDatabase {

    private final SQLiteDataSource dataSource = new SQLiteDataSource();
    private final String dataBaseName;
    private final String databaseUrl;

    public CardDatabase(String dataBaseName) {
        this.dataBaseName = dataBaseName;
        this.databaseUrl = "jdbc:sqlite:./" + dataBaseName;
    }
}

关于您收到的错误:这可能只是您的IDE没有足够深入地分析您的代码,它可以检查dataBaseNameSQLiteDataSource dataSource=new SQLiteDataSource()行之后仍然是null

 类似资料:
  • 我已经部署了一个在WebSphere8.5.5.10IBM上使用Hibernate的应用程序。hibernate-jpa依赖项提供了作用域,因为WebSphere默认拥有它。该应用程序工作,但我得到以下警告,不能摆脱它。 有人能帮忙吗?

  • 问题内容: 我在做什么 : 我预期的输出: 平均=(10 + 20 + 30)/ 5 = 12 MYSQL的输出: 平均值=(10 + 20 + 30)/ 3 = 20 理想情况下,我想要的是MYSQL应该得到5行的总和并除以5,但是它只能除以3(非NULL行) 为什么会发生这种情况,我该怎么做才能获得正确的AVG,即60/5?PS:我不能使标记字段NOT NULL,在我的数据库设计中,标记字段允

  • 问题内容: 在我的JS App中,我有许多Ajax调用。我正在使用最新的Chrome浏览器,并且最近在控制台中显示以下警告。 不赞成在主线程上使用同步XMLHttpRequest,因为它会对最终用户的体验产生不利影响。如需更多帮助,请访问http://xhr.spec.whatwg.org/。 现在,我正在尝试将所有内容更改为。但这会导致很多错误,因为我的应用需要与一起运行。 警告只是错误还是其他

  • 我在Java中有一个值总是null,但我不明白为什么,因为我正在使用类构造函数设置变量的值。 我有这样的代码: 然后是以下内容: 出于某种原因,IntelliJ IDEA说cfgFilePath总是null。我正在用驱动程序类构造函数初始化它,那么为什么它是空的呢?当我运行程序时,我得到一个空指针异常。

  • 输入df。mean() 输出: 输入 (正确)输出: “a”中的类型值col=int 其他col具有str值 为什么会发生这种情况

  • 我将数据保存到会话中,但是我尝试将其读回,结果为空。Spring MVC是我的后端,Angular 4是前端。 爪哇: 角: 你知道我错过了什么吗?也许是CORS的事?