动态类与硬编码字段Java

问题描述 投票:0回答:1

我有一个程序,从各种科目招募犯罪现场的证人帐​​户。每种主题都有自己的Report类。例如:

public class EyeWitnessReport extends AbstractReport {
        private String details;
        private String relation;
        private QuestioningResults questioningResults;
        private Integer stressLevel;
        private EnumSet<CrimeFacts> crimeFacts;
        private Religion religion; //to see if swearing on the Bible is an issue
    }

public class ExpertWitnessReport extends AbstractReport {
    private Expertise fieldOfExpertise;
    private boolean relatedToAccused;
    private List<Conflict> conflicts;
}

我的应用程序的主要功能获取所有报告并将它们合并为一个CrimeScene类,其中包含犯罪现场的所有详细信息(按优先级等)

 public CrimeScene mergeReports(List<AbstractReport> sources){
        //takes all the reports in sources and returns one CrimeScene with the most relevant fields
}

我的问题是,在某些逻辑之后,CrimeScene类基本上由报告中的数据组成。它有70个可能的字段(每种类型的报告的字段),尽管平均只有大约10-20个字段被填充。此外,它有2-3个自己的领域(creationTime,reportingOfficer等...)

我该如何实施呢?使用DynaBean,Map<String, Object>或类似的东西,使CrimeScene成为常规类(70个硬编码字段,平均不超过20个)或动态类是更好的实现吗?

java class architecture hashmap implementation
1个回答
0
投票

最好使用具有属性的类或者某些复合类,这样可以限制由于组合而在单个类中的属性数。使用这种方法,您(以及任何其他开发人员)将确切地知道对象具有哪些属性和类型。

如果你使用map,那么你将失去类型安全性,因为你必须使用Map<String, Object>来适应不同类型属性的值。另外,使用map方法,了解存在哪些属性(在运行时将哪些键添加到地图中)的唯一方法是调试代码。

© www.soinside.com 2019 - 2024. All rights reserved.