使用 setter/getter 从其他 类 访问数组属性
Accessing array attributes from other classes with setter/getter
我是 Java 的新手,想知道如何使用 setter/getter 访问来自其他 class 的属性(如果它们是数组)。
目前,我有一个日期 class 为 month/day/year 设置了一个带参数的日期。我需要制作另一个 class,它使用日期 class 来设置雇用日期以作为属性与其他属性一起存储。
我的代码目前是这样的:
public class DateClass {
private int month;
private int day;
private int year;
// MONTH
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
// DAY
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
// YEAR
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
// FULL DATE
public void setDate(int month, int day, int year) {
setMonth(month);
setDay(day);
setYear(year);
}
public int[] getDate() {
return new int[] { month, day, year };
}
}
这是第二个class:
public class EmployeeClass {
private int[] dateOfHire;
public void setDateOfHire(int[] dateOfHire) {
dateOfHire.setDate(dateOfHire);
}
public String[] getDateOfHire() {
return dateOfHire.getDate(dateOfHire);
}
}
错误提示:无法在数组类型 int[]
上调用 setDate(int[])
我该如何解决这个问题?谢谢!
您需要做一些更改。首先你的 EmployeeClass
应该有一个 DateClass
属性而不是 int[]
并且 setDateOfHire()
方法必须调用 DateClass
中可用的 setDate()
方法有 3 个参数:
public class EmployeeClass {
private DateClass dateOfHire;
public void setDateOfHire(int[] dateOfHire) {
this.dateOfHire.setDate(dateOfHire[0], dateOfHire[1], dateOfHire[2]);
}
public int[] getDateOfHire() {
return dateOfHire.getDate();
}
}
这可行,但我建议您检查一下您的 class 设计。使用 int
数组定义日期是一种非常糟糕的做法。
您正在声明整数基元数组private int[] dateOfHire;
要声明 DateClass
的数组,只需使用 private DateClass[] dateOfHire
在 []
之前定义的基元或 class 决定了初始化数组的类型
您可以使用 this
作为参考
您需要创建一个 DateClass 对象才能使用它的方法。考虑像这样更改您的 EmployeeClass:
public class EmployeeClass {
private int[] dateOfHire; // not sure of the purpose of this array
private DateClass dateClassObject; // your variable name is up to you
public EmployeeClass () { // Constructor for this class
dateClassObject = new DateClass(); // created a new DateClass in the constructor
}
public void setDateOfHire(int[] dateOfHire) {
// this dateOfHire array is the array that is passed in when
// method is called. Do not confuse it the array declared as a property.
int day = dateOfHire[0] // assuming the day is in index 0 of the array
int month = dateOfHire[1] // assuming the month is in index 1 of the array
int year = dateOfHire[2] // assuming the year is in index 2 of the array
dateClassObject.setDate(month, day, year); // changed to dateClassObject. Also changed setDate to pass correct parameters
}
public int[] getDateOfHire() { // changed String[] to int[] because returned value of getDate() is a int array.
return dateClassObject.getDate(); // changed to dateClassObject. Removed the parameter.
}
}
在 setDateOfHire
中只需设置值而不是对其调用方法:
public void setDateOfHire(int[] dateOfHire) {
this.dateOfHire = dateOfHire;
}
将其与您在 DateClass 中实现设置器的方式进行比较。
我是 Java 的新手,想知道如何使用 setter/getter 访问来自其他 class 的属性(如果它们是数组)。
目前,我有一个日期 class 为 month/day/year 设置了一个带参数的日期。我需要制作另一个 class,它使用日期 class 来设置雇用日期以作为属性与其他属性一起存储。
我的代码目前是这样的:
public class DateClass {
private int month;
private int day;
private int year;
// MONTH
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
// DAY
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
// YEAR
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
// FULL DATE
public void setDate(int month, int day, int year) {
setMonth(month);
setDay(day);
setYear(year);
}
public int[] getDate() {
return new int[] { month, day, year };
}
}
这是第二个class:
public class EmployeeClass {
private int[] dateOfHire;
public void setDateOfHire(int[] dateOfHire) {
dateOfHire.setDate(dateOfHire);
}
public String[] getDateOfHire() {
return dateOfHire.getDate(dateOfHire);
}
}
错误提示:无法在数组类型 int[]
上调用 setDate(int[])我该如何解决这个问题?谢谢!
您需要做一些更改。首先你的 EmployeeClass
应该有一个 DateClass
属性而不是 int[]
并且 setDateOfHire()
方法必须调用 DateClass
中可用的 setDate()
方法有 3 个参数:
public class EmployeeClass {
private DateClass dateOfHire;
public void setDateOfHire(int[] dateOfHire) {
this.dateOfHire.setDate(dateOfHire[0], dateOfHire[1], dateOfHire[2]);
}
public int[] getDateOfHire() {
return dateOfHire.getDate();
}
}
这可行,但我建议您检查一下您的 class 设计。使用 int
数组定义日期是一种非常糟糕的做法。
您正在声明整数基元数组private int[] dateOfHire;
要声明 DateClass
的数组,只需使用 private DateClass[] dateOfHire
在 []
之前定义的基元或 class 决定了初始化数组的类型
您可以使用 this 作为参考
您需要创建一个 DateClass 对象才能使用它的方法。考虑像这样更改您的 EmployeeClass:
public class EmployeeClass {
private int[] dateOfHire; // not sure of the purpose of this array
private DateClass dateClassObject; // your variable name is up to you
public EmployeeClass () { // Constructor for this class
dateClassObject = new DateClass(); // created a new DateClass in the constructor
}
public void setDateOfHire(int[] dateOfHire) {
// this dateOfHire array is the array that is passed in when
// method is called. Do not confuse it the array declared as a property.
int day = dateOfHire[0] // assuming the day is in index 0 of the array
int month = dateOfHire[1] // assuming the month is in index 1 of the array
int year = dateOfHire[2] // assuming the year is in index 2 of the array
dateClassObject.setDate(month, day, year); // changed to dateClassObject. Also changed setDate to pass correct parameters
}
public int[] getDateOfHire() { // changed String[] to int[] because returned value of getDate() is a int array.
return dateClassObject.getDate(); // changed to dateClassObject. Removed the parameter.
}
}
在 setDateOfHire
中只需设置值而不是对其调用方法:
public void setDateOfHire(int[] dateOfHire) {
this.dateOfHire = dateOfHire;
}
将其与您在 DateClass 中实现设置器的方式进行比较。