为了账号安全,请及时绑定邮箱和手机立即绑定

将对象数组传递给方法

将对象数组传递给方法

尚方宝剑之说 2021-11-24 15:59:52
所以我想使用一种方法将多个对象写入各自的文件。但是我不知道如何在不定义特定对象的情况下导入对象数组。people is class 纯粹用于将创建的对象存储在数组中,因此可以更轻松地跨其他类访问。例如public class People {    private Student[10];    private Teacher[10];    public void setStudentArray(Student, index) {        Student[index] = Student;    }    public void setTeacherArray(Teacher, index) {        Teacher[index] = Teacher;    }}public class Student extends People {    String name;    int StudentID;    public String getName() {        return name;    }}public class Teacher extends People {    String name ;    int Teacher ID;    public String getName() {        return name;    }}public class Main {    People p = new People();    public void main (String[] args) {        Student s = new Student("default-name" , 1);        p.setStudentArray(s, 0);        Teacher t = new Teacher("default-name", 1);        p.setTeacherArray(t, 0);        outputName(p.getStudentArray, 0);        outputName(p.getTeacherArray, 0)    }    //THIS IS WHERE I AM STRUGGLING I dont know how to pass teachers or students array to it.    //I want the Object[] parameter to accept both Student[] and Teacher[]    public void outputName(Object[], index) {        System.out.println(Object[index].getName);      }   }我认为我的方法采用 Object[] 是错误的,但我不知道如何处理它。我认为问题在于 Object[] 与 Teacher[] 和 Student[] 是一个完全不同的类,这就是我出错的地方。我想在教师和学生的班级中使用 .getName 方法来打印学生教师的姓名。(只是为了让我可以看到传球正在起作用。)如果这是不可能的,我想我不会尝试可以采用不同对象的方法。我知道我只能使用两种方法,一种用于学生,一种用于教师,但我希望该方法适用于多个对象,以便我可以向其中添加更多对象数组。
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

首先学习如何声明数组并选择有效的变量。


在您的 People 类中进行以下修改。


public class People {

    //Declare arrays like this.

    private Student[] student;

    private Teacher[] teacher;


    //Initialize arrays

    public People(){

        student = new Student[10];

        teacher = new Teacher[10];

    }

    public void setStudentArray(Student s,int index) {

        student[index] = s;

    }


    public void setTeacherArray(Teacher t, int index) {

        teacher[index] = t;

    }


    //Add getter methods

    public Student[] getStudentArray(){

        return student;

    }


     public Teacher[] getTeacherArray(){

        return teacher;

    }

}

在子类 Student 和 Teacher 添加 Argument 构造函数


最后在你的 outputName 方法中你可以做这样的事情。


 public static void outputName(Object[] obj, int index) {


    if(obj instanceof Student[]){

        Student[] s = (Student[])obj;//parsing to student array

        System.out.println("Student name : "+s[index].getName());

    }


    if(obj instanceof Teacher[]){

        Teacher[] teacher = (Teacher[])obj;//parsing to teacher array

        System.out.println("Teacher name : "+teacher[index].getName());

    }



}  

输出:


Student name : default-name

Teacher name : default-name


查看完整回答
反对 回复 2021-11-24
?
暮色呼如

TA贡献1853条经验 获得超9个赞

所以Peopleclass 是由Studentand扩展的Teacher

这里有什么共同点?

  1. String name存在于StudentTeacher

  2. public String getName()也存在于StudentTeacher

您可以将这些共性转移到People课堂上。还要确保从 Student 和 Teacher 类中删除 name 属性和 getName

所以你People 更新的课程可以是:

public class People {

    private String name; //Newly added


    private Student[10];   //This ideally shouldn't be in People class rather a different class

    private Teacher[10];   //This ideally shouldn't be in People class rather a different class


    public void setStudentArray(Student, index) {

      Student[index] = Student;

    }


    public void setTeacherArray(Teacher, index) {

      Teacher[index] = Teacher;

    }


    public String getName() {

      return name;

    }


    public void setName() {

      this.name = name;

    }

}

outputname 方法应该是这样的:


public void outputName(People[] people, index) {

    System.out.println(people[index].getName());  

}

注意:我不是在这里更正语法,而只是提供一个想法。


查看完整回答
反对 回复 2021-11-24
?
HUX布斯

TA贡献1876条经验 获得超6个赞

你必须稍微改变你的建模。即使您设法将 Student[] 作为 Object[] 传递,您也无法调用 getName 方法,因为它不是 Object 方法。

因此,更好的建模方法是将 getName 方法设为 People 方法,并且 Student 和 Teacher 类都将继承它。

然后你可以接收 People[] 作为 outputName 方法参数,并在里面使用 getName 方法。


查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信