所以我通讀了幾個不同的主題,但他們都沒有直接解決我如何解決我的問題。我試圖創建一個Calendar
(Gregorian
),然後使用.complete()
方法,以便在我的班級中使用此類(Paycheck
),我可以從這些日期找到相關的dates
並創建new Calendar(s)
以確定支付的工資和欠付的工資。但是,它告訴我,.complete()
.computeTime()
和.computeFields()
都不可見。日曆(GregorianCalendar).complete()方法不可見?
從我讀過的,這似乎是因爲他們是受保護的方法,即使我爲他們,我不能訪問他們,因爲該類不在我的包。我如何得到這個,以便我可以撥打.complete()
方法?
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Paycheck {
//fields
protected double grossAmount;
protected Calendar paymentDate;
protected Calendar payPeriodStart;
public Paycheck(double grossAmount, int iYear, int iMonth, int iDay, int sYear, int sMonth, int sDay) {
this.grossAmount = grossAmount;
TimeZone tz1 = TimeZone.getTimeZone("America/Chicago");
this.paymentDate = new GregorianCalendar(iYear, iMonth, iDay);
this.paymentDate.setTimeZone(tz1);
this.paymentDate.complete(); //says "method not visible"
this.payPeriodStart = new GregorianCalendar(sYear, sMonth, sDay);
this.payPeriodStart.setTimeZone(tz1);
}
你爲什麼要調用一個內部方法。你怎麼知道它存在?它沒有在javadoc中描述。你真的想在這裏完成什麼?如果你不叫'complete()',你認爲你有什麼樣的問題?忘記方法存在,並做你需要做的。沒有它,'GregorianCalendar'將正常工作。 – Andreas
@Andreas當我評論了其他幾個地方時,我這樣做是因爲該方法存在的事實(https://www.tutorialspoint.com/java/util/java_util_calendar.htm)讓我覺得有必要將所有其他領域,因爲它檢查,看看他們是否都設置(這使我認爲字段不會自動設置在構造函數。我的道歉。感謝您的幫助! –
爲什麼你閱讀時,當java有更好的描述,並且是*官方*規範?請參閱https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html – Andreas