У меня есть 3 класса, которые реализуют следующий интерфейс:
public interface PolicyType {
public boolean isValid();
public void displayTemplate();
}
И в моем основном я создал и инициализировал 1 экземпляр каждого класса:
//the same method exists for MedicalPolicy and MotorPolicy
private static void displaySucMsg(TravelPolicy travelPolicy,List<TravelPolicy> travelPolicyList){
if(travelPolicy.isValid()) {
System.out.println("Policy: " + travelPolicy.getPolicyNo() + " was added successfully");
travelPolicyList.add(travelPolicy);
}
}
public static void main(String[] args){
List<TravelPolicy> travelPolicyList = new ArrayList<TravelPolicy>(2);
List<MotorPolicy> motorPolicyList = new ArrayList<MotorPolicy>(2);
List<MedicalPolicy> medicalPolicyList = new ArrayList<MedicalPolicy>(2);
TravelPolicy travelPolicy1 = new TravelPolicy(policyNo,param2,etc...);
displaySucMsg(travelPolicy1,travelPolicyList);
MotorPolicy motorPolicy = new MotorPolicy(policyNo,param2,etc...);
displaySucMsg(motorPolicy,motorPolicyList);
MedicalPolicy medicalPolicy = new MedicalPolicy(policyNo,param2,etc...);
displaySucMsg(medicalPolicy,medicalPolicyList);
}
Как вы можете видеть Я создал 3 List
s каждый для class
, но я хочу иметь 1 List
, чтобы в конце я мог использовать for loop
, моя проблема в том, что displaySucMsg
использует Метод получения для поля policyNo
(а затем добавить экземпляр в соответствующий список), поэтому я не могу создать List
из PolicyType
и добавить в него все экземпляры.
Мой вопрос должен Я создаю List
из Object
(что, я полагаю, было бы плохой практикой) и добавляю в него все 3 List
s, или я должен добавить public String getPolicyNo()
к своему интерфейсу, поскольку все мои 3 класса имеют этот метод ( что я тоже считаю плохой практикой, так как если я когда-либо создаю новый класс, который реализует PolicyType
, но не нуждается в методе getPolicyNo()
, это очень плохо), или я должен просто оставить свой код как есть и запустить 1 for loop
на каждом List
или есть другое решение?