我有3个实现以下接口的类:public interface PolicyType { public boolean isValid(); public void displayTemplate();}在我的主目录中,我创建并初始化了每个类的1个实例://the same method exists for MedicalPolicy and MotorPolicyprivate 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); }如您所见,我为一个List每个创建了3个class,但是我希望有1个List,以便最后我可以在其上使用for loop,我的问题是对displaySucMsg字段使用getter方法(然后将实例添加到适当的列表中),因此我无法创建policyNo的List并将所有实例添加到其中。我的问题是我应该创建PolicyType的List(我认为这是一种不好的做法)并将所有3个Object添加到其中,还是应该将List添加到我的界面中,因为我的所有3个类具有该方法(我认为这也是一种不好的做法,因为如果我创建了一个实现public String getPolicyNo()但不需要PolicyType方法的新类,那将是非常糟糕的),或者我应该保留我的代码是并在每个getPolicyNo()上运行1个for loop还是有其他解决方案? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 类设计应反映现实生活中的业务场景。因此,定义什么是“策略”以及该对象的强制属性和行为是什么。如果policyNo和policyType是重要属性,则不必担心它们永远为空。如果碰巧认为某个属性是强制性的,但是随着业务场景的改变,情况就不再如此,那么您可以随时实现该属性并返回默认值,或者实际上在接口上具有默认实现。您甚至可以引入2个接口-OldPolicy和NewPolicy以适应“策略”定义的更改。在您的示例中,将getPolicyNo()添加到接口PolicyType并构建一个列表,该列表可以容纳3种策略类型的对象。 (adsbygoogle = window.adsbygoogle || []).push({}); 10-07 15:48