2016-11-11 106 views
0

下面的程序是與下面線這裏tutorial.I的一部分具有一定的混亂 :公曆:混亂與調用方法的對象上

 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

add方法返回void,這意味着你不能將它分配給任何數據類型。 add方法修改gCal對象併爲其添加年份,所以當調用gCal.getTime()時它已更新日期。 – Laxman

回答

1

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

原因是它對GregorianCalendar的內部數據執行操作。它將定義的時間部分添加到它。

您不需要從add()方法得到某些東西。調用它之後,同一個對象已經更新,因此,您只需要獲取它包含的新時間值。

請參閱GregorianCalendar add() method參考。

+0

這裏我們給無論日期添加一年gCal.add(GregorianCalendar.YEAR,1);但下面這行代碼如何還能保持這一年?因爲我們沒有調用add方法,所以我們只調用get time方法 this.expiryDate = gCal.getTime(); –

+0

@DePaul是的。新值已經包含在'gCal'對象中。你不需要另一個對象。 – sanastasiadis

0

GregorianCalendar的add方法沒有任何返回類型。 根據java文檔它有以下簽名。

公共無效添加(INT場, INT量)

它的返回類型爲void意味着它不返回任何值,這就是爲什麼你不能做到像如下。

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