【问题标题】:LocalDate in array gives me null result [duplicate]数组中的 LocalDate 给了我空结果[重复]
【发布时间】:2019-05-19 23:06:02
【问题描述】:

我的图书计划有一系列租赁。返回日期不能为空。 LocalDate.parse 中的日期必须显示出来。

public class Rent implements {
    private LocalDate dateOfRent;


    public Rent(LocalDate dateOfRent) {
       dateOfRent = LocalDate.now();
 }


 public LocalDate getdateOfRent(){
           return dateOfRent;
         }

     public void setLocalDate(LocalDate dateOfRent){
           this.dateOfRent = dateOfRent;
         }


public String toString() {
        return "Date of Rent:" + dateOfRent;
    }
}

我的出租阵列

Rent rentals = {
LocalDate.parse("2008-05-16")
};

【问题讨论】:

    标签: java


    【解决方案1】:

    由于您的构造函数参数与您的字段dateOfRent 具有相同的名称,您必须使用this.dateOfRent 来引用该字段,否则您将值分配给参数变量。所以改变这个:

        public RentApp(LocalDate dateOfRent) {
            dateOfRent = LocalDate.now();
        }
    
    

    用这个:

        public RentApp(LocalDate dateOfRent) {
    //      this.dateOfRent = LocalDate.now(); // DON'T YOU WANT TO USE THE ARGUMENT?
            this.dateOfRent = dateOfRent;
        }
    

    希望这会有所帮助。

    【讨论】:

    • @qwerty 提示:您的IDE为您的代码着色,为传递的参数dateOfRent 显示一种颜色,为成员变量dateOfRent 显示另一种颜色在类上定义。注意到颜色显示了问题。
    【解决方案2】:
    public Rent(LocalDate dateOfRent) {
           dateOfRent = LocalDate.now();
     }
    

    您正在“重置”本地参数dateOfRent,而不是设置成员。试试:

    this.dateOfRent = LocalDate.now();
    

    这被称为parameter shadowing

    (顺便说一句:为什么还要有参数?)

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      相关资源
      最近更新 更多