格里高利日历:在对象上调用方法时感到困惑

时间:2016-11-11 10:35:30

标签: java

下面的程序是教程的一部分。我在这里有些困惑 以下几行:

     GregorianCalendar gCal = new GregorianCalendar();
                gCal.add(GregorianCalendar.YEAR, 1);
                this.expiryDate = gCal.getTime();

上面的代码不应该是这样的:

GregorianCalendar gCal = new GregorianCalendar();
SomeDatatype variable = gCal.add(GregorianCalendar.YEAR, 1);
      this.expiryDate = variable.getTime();

以下是原始计划的一部分:

package models;
import java.util.Date;
import java.util.GregorianCalendar;

import utilities.GenderType;


public class Customer {

    private String title;
    private String firstName;
    private String surname;
    private String address;
    private String phoneNumber;
    private String email;
    private int customerNumber;
    private GenderType gender;
    private boolean isvalid;
    private Date expiryDate;

    public Customer(String title, String firstName, String surname, String address,
            String phoneNumber, String email, int customerNumber, GenderType gender) {

        setName(title, firstName, surname);
        this.address = address;
        this.phoneNumber=phoneNumber;
        this.email = email;
        this.customerNumber = customerNumber;
        this.gender = gender;
        this.isvalid = true;
        GregorianCalendar gCal = new GregorianCalendar();
        gCal.add(GregorianCalendar.YEAR, 1);
        this.expiryDate = gCal.getTime();
    }
}

2 个答案:

答案 0 :(得分:1)

GregorianCalendar类中,add()方法返回void。

原因是它对GregorianCalendar的内部数据执行操作。它将定义的时间部分添加到其中。

您无需从add()方法返回任何内容。调用后,相同的对象已经更新,因此,您只需获取它包含的新时间值。

请参阅GregorianCalendar add() method参考。

答案 1 :(得分:0)

GregorianCalendar的add方法没有任何返回类型。 根据java doc,它具有以下签名。

  

public void add(int field,          int amount)

它的返回类型为void意味着它没有返回任何值,这就是为什么你不能这样做的原因。

SomeDatatype variable =gCal.add(GregorianCalendar.YEAR, 1);