دایتل در آخرین کتاب خود بر خلاف قبل صحت پارامترهای سازنده را توسط فراخوانی متدهای setter در سازنده انجام نمی دهد بلکه شروط متد setter را مجددا در سازنده بازنویسی کرده آیا این کار تاثیری در performance دارد؟
مثال کتاب نسخه 9:
public HourlyEmployee( String first, String last, String ssn, double hourlyWage,
double hoursWorked ) {
super( first, last, ssn );
setWage( hourlyWage );
setHours( hoursWorked );
public void setWage( double hourlyWage ) {
if ( hourlyWage >= 0.0 )
wage = hourlyWage;
else
throw new IllegalArgumentException("Hourly wage must be >= 0.0" );
}
}
مثال بالا در نسخه 10 کتاب:
public HourlyEmployee(String firstName, String lastName,
String socialSecurityNumber, double wage, double hours) {
super(firstName, lastName, socialSecurityNumber);
if (wage < 0.0)
throw new IllegalArgumentException("Hourly wage must be >= 0.0");
if ((hours < 0.0) || (hours > 168.0))
throw new IllegalArgumentException("Hours worked must be >= 0.0 and <= 168.0");
this.wage = wage;
this.hours = hours;
}
public void setWage(double wage) {
if (wage < 0.0)
throw new IllegalArgumentException("Hourly wage must be >= 0.0");
this.wage = wage;
}