EmployeeTest.java 中Eclipse提示错误
Java codeimport java.util.Date;
import java.util.GregorianCalendar;
//import EmployeeTest20110906.Employee;
public class EmployeeTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// fill the staff array with three Employee objects
Employee[] staff = new Employee[3];
//new Employee("James Bond", 100000, 1950, 1, 1);
//Eclipe提示下面三行出错了,我不知道要怎么改正?
staff[0] = new Employee("Carl Cracker", 75000, 1987, 11, 15);
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
// raise everyone's salary by 5%
for (Employee e : staff)
e.raiseSalary(5);
// print out information about all Employee objects
for (Employee e : staff)
System.out.println("name=" + e.getName() + ",salary="
+ e.getSalary() + ",hireDay=" + e.getHireDay());
}
class Employee {
public Employee(String n, double s, int year, int month, int day) {
this.name = n;
this.salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1,
day);
// GregorianCalendar uses 0 for January
this.hireDay = calendar.getTime();
}
public String getName() {
return this.name;
}
public double getSalary() {
return this.salary;
}
/**
* 不要编写返回引用可变对象的访问器方法,会产生下列问题
* Employee harry = ...;
* Date d = harry.getHireDay();
* double tenYearsInMilliSeconds = 10 * 365.25 * 24 * 60 * 60 * 1000;
* d.setTime(d.getTime() - (long) tenYearsInMilliSconds)
*let's give Harry ten years added seniority多增加了十年的工龄
*
* 措施:先对其克隆再返回
*
* @return
*/
/*public Date getHireDay() {
return this.hireDay;
}*/
public Date getHireDay(){
return (Date) this.hireDay.clone();
}
public void raiseSalary(double byPercent) {
double raise = this.salary * byPercent / 100;
this.salary += raise;
}
private String name;
private double salary;
private Date hireDay;
}
}
------解决方案--------------------
这是因为你的代码里面Employee被声明为了内部类,最简单的解决方法就换一下Employee的位置,不让其为内部类
Java codeimport java.util.Date;
import java.util.GregorianCalendar;
//import EmployeeTest20110906.Employee;
public class EmployeeTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// fill the staff array with three Employee objects
Employee[] staff = new Employee[3];
//new Employee("James Bond", 100000, 1950, 1, 1);
//Eclipe提示下面三行出错了,我不知道要怎么改正?
staff[0] = new Employee("Carl Cracker", 75000, 1987, 11, 15);
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
// raise everyone's salary by 5%
for (Employee e : staff)
e.raiseSalary(5);
// print out information about all Employee objects
for (Employee e : staff)
System.out.println("name=" + e.getName() + ",salary="
+ e.getSalary() + ",hireDay=" + e.getHireDay());
}
}
class Employee {
public Employee(String n, double s, int year, int month, int day) {
this.name = n;
this.salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1,
day);
// GregorianCalendar uses 0 for January
this.hireDay = calendar.getTime();
}
public String getName() {
return this.name;
}
public double getSalary() {
return this.salary;
}
/**
* 不要编写返回引用可变对象的访问器方法,会产生下列问题
* Employee harry = ...;
* Date d = harry.getHireDay();
* double tenYearsInMilliSeconds = 10 * 365.25 * 24 * 60 * 60 * 1000;
* d.setTime(d.getTime() - (long) tenYearsInMilliSconds)
*let's give Harry ten years added seniority多增加了十年的工龄
*
* 措施:先对其克隆再返回
*
* @return
*/
/*public Date getHireDay() {
return this.hireDay;
}*/
public Date getHireDay(){
return (Date) this.hireDay.clone();
}
public void raiseSalary(double byPercent) {
double raise = this.salary * byPercent / 100;
this.salary += raise;
}
private String name;
private double salary;
private Date hireDay;
}