首页 > 解决方案 > 在这个特定问题中应用继承的 Java 方法是什么?

问题描述

我有两个 A 类和 B 类,我有一个电子邮件生成脚本。

在 python 中,代码看起来像

def generateEmail(message):
    #implementation

def getMessage(item_list):
    message = []
    for item in item_list:
        #do some processing 
    return message

def main():
    #other code
    generateEmail(getMessage(item_list_A))
    generateEmail(getMessage(item_list_B))

这不适用于 Java,因为它是强类型的。我怎样才能在java中实现这个?

编辑:这里是 A(学生)和 B(教师)类:

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Student{
   int studentId;
   String studentName;
   LocalDate dateOfAddmission;
   float percentage;
   int currentStd;
   String father;
   String mother;
   LocalDate dob;
   String address;
   Boolean disability;
}


@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Teacher{
   int teacherId;
   String teacherName;
   LocalDate dateOfJoining;
   LocalDate dateOfRetirement;
   Boolean classTeacher;
   int currentStd = null;
   LocalDate dob;
   String address;
   Boolean disability;
}

这是 A 的处理和生成电子邮件类。

public class generateEmail{
    public Boolean generateEmail(ArrayList<Student> listOfStudent){
        //code to fetch the list of relevant students ids
        ArrayList<int> relevantStudents = getRelevantStudents();
        ArrayList<String> messageList = new ArrayList<>();

        listOfStudent.forEach(student->{
           if(relevantStudents.contains(student.getStudentId()){
                //create a message string from the student information and add to the message list
           }
        }
        //create an excel sheet with the message strings 
       //send email 
    }
}

我需要为教师创建一个类似的报告生成方法,但属性不同,所以我需要帮助。

标签: javainheritance

解决方案


public interface Dummy{
}

public class A implements Dummy{
   int studentId;
   String studentName;
   LocalDate dateOfAddmission;
   float percentage;
   int currentStd;
   String father;
   String mother;
   LocalDate dob;
   String address;
   Boolean disability;

}

public class B implements Dummy{
   int teacherId;
   String teacherName;
   LocalDate dateOfJoining;
   LocalDate dateOfRetirement;
   Boolean classTeacher;
   int currentStd = null;
   LocalDate dob;
   String address;
   Boolean disability;
}

public class MainClass{
    public static void main(String...array){
        //other code
        generateEmail(getMessage(itemListA));
        generateEmail(getMessage(itemListB));
    }
    
    private List<String> getMessage(List<Dummy> itemList){
         List<String> message = new ArrayList<>();
        for(Dummy item : itemList){
            //if required typecast the dummy object and do the processing                           
            //accordingly
            //do some processing 
        }
        return message
    }
    
    private void generateEmail(List<String> messages){
         //Do your processing
    }


}

推荐阅读