【问题标题】:java.lang.NullPointerException Main.java:6 [duplicate]java.lang.NullPointerException Main.java:6 [重复]
【发布时间】:2016-08-29 19:22:18
【问题描述】:

我有两节课

我不确定为什么会出错。在eclipse中没有红色下划线。

主要:

package com.example;

public class Main {
    public static void main(String[] args) {
        Week myWeek = new Week(Week.days.FRIDAY);
        System.out.println(myWeek.Today.toString());
    }
}

周:

package com.example;

public class Week {
    public static enum days {
        SUNDAY,
        MONDAY,
        TUESDAY,
        WEDNESDAY,
        THURSDAY,
        FRIDAY,
        SATURDAY
    }

    static final days[] order = {
        days.SUNDAY, days.MONDAY, days.TUESDAY, days.WEDNESDAY, 
        days.THURSDAY, days.FRIDAY, days.SATURDAY
    };
    days Today;

    Week(days toSetTo){
        @SuppressWarnings("unused")
        days Today = toSetTo;
    }
}

错误出现在 Main.java:6

【问题讨论】:

  • 构造函数中的变量存放在哪里?
  • 现在是开始使用 Java 代码约定的时候了;它们使沟通变得更加简单。大写类(包括枚举),ALL_CAPS 中的常量,camelCase 中的变量。
  • 您为Today 声明了两个变量,一个变量是构造函数的本地变量,另一个是实例变量。您应该始终使用this.varName 来引用实例变量。

标签: java


【解决方案1】:

以下在运行时失败:

myWeek.Today.toString()

因为myWeek.Today 为空。

在您的构造函数中,而不是:

days Today = toSetTo;

你需要这样做:

Today = toSetTo;

【讨论】:

    【解决方案2】:

    您应该正确修复unused 警告而不是抑制它。删除该行中的单词days。并仔细查看 Eclipse 中变量的颜色。它们会告诉您哪些名称属于彼此。

    【讨论】:

      猜你喜欢
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多