从另一个类的对象数组访问getter方法时,我目前遇到问题。
public class Getters {
public double getTotal() {
double total = 0;
total=x+y+z;
return total;
}
我将运行一个选择排序算法,该算法在这方面有效并且成功。
public class Sort {
private Getters x[] = new Getters[21];
public void selectionSort() {
Getters temp;
int minIndex;
for(int i=0; i<=N-2; i++) {
minIndex = i;
for(int j=i+1; j<=N-1; j++) {
if(arrayObj[j].getTotal() < arrayObj[minIndex].getTotal())
minIndex = j;
}
if(minIndex != i) {
temp = arrayObj[i];
arrayObj[i] = arrayObj[minIndex];
arrayObj[minIndex]=temp;
}
}
这现在将调用我的getTotal()
并根据总点数对对象数组进行排序。填充对象后,我的主要方法如下:
Sort x = new Sort();
Report y = new Report();
....
x.selectionSort();
y.displayReport();
现在,我希望我的displayReport
类打印出有关我的对象数组的信息,但是我似乎无法编写它。如果我试图像这样将x传递给getTotal()
,我将无法在新类中调用displayReport
:
y.displayReport(x);
然后,我将像这样设置类Report
:
public class Report{
public void displayReport(Sort x) {
for(int i = 20; i > 15; i--) {
System.out.println(x.getTotal());
}
}
}
所以我的问题是我试图访问getTotal()
类中的Sort
,但是它属于Getters
类。在我的主要方法中,我无法找到一种将所有对象数组传递给Report
类的方法,以便可以让它访问我的吸气剂。
答案 0 :(得分:0)
您的问题似乎是您无权访问您感兴趣的字段。有两种解决方法。首先,您可以像下面这样简单地将Getters x[]
类中的Sort
字段设置为public:
public Getters x[] = new Getters[21];
这将允许您使用以下行从x[]
类访问Report
:
System.out.println(x.x.getTotal());
在这里,我们正在访问对象x[]
的字段Sort x
。
但是,这仅仅是创可贴解决方案。在Java中,您要考虑封装数据,这意味着您为类中的每个字段指定了特定的访问方式。如果将字段设置为public,则可以访问数据,是的,但是以未定义的方式访问,以便其他类可以以您不希望的方式访问数据。这可能会导致一些令人讨厌的错误。
您可能还需要考虑变量名称,这些变量名称解释了它们所指的对象是什么,因此我可能将其称为Getters x[]
而不是Getters getters[]
。
此外,我的方法是将x[]
字段保持私有状态,并在Sort
内创建一个新方法,该方法只是将其返回:
public Getters[] getGetters()
{
return getters;
}
这不仅封装了数据,而且在Report
类中编写用于访问数据的行时更有意义:
System.out.println(x.getGetters.getTotal());