【发布时间】:2019-09-23 08:51:21
【问题描述】:
我在 Android 中做一个可以运行不同 ML 模型的应用程序,我想创建一些类来表示结果的数据,每个 ML 模型都有它自己的变量/结果,例如,一个分类问题同时有标签其他没有。
我想在 java 中使用继承,并做类似 Result 作为接口和 ClassificationResult 和 RegresionResult 的父亲,所以我可以这样做:
Arraylist<Result> resultList;
ClassificationResult cr = new ClassificationResult...
RegresionResult rr = new RegresionResult...
resultList.add(cr)
resultList.add(rr)
但是我面临的问题是我不能从孩子那里调用方法,比如 ClassificationResult.getLabels()(我可以在界面中拥有所有孩子的所有方法,但对我来说似乎很奇怪)
我看到了一些模式,Factory 和 Builder,但我遇到了前面描述的 Factory 模式和 Builder(将所有变量放在一个类中)的问题,其中大多数都不会被初始化。
我会很感激一些关于我应该如何设计这个的想法
【问题讨论】:
-
查看我关于多态性的帖子,我认为this 会对您有所帮助
-
是的,我完全理解您的帖子,但例如,如果您想为
Circle添加更多功能,例如getPositionCentre(),该方法不在Shape 中,因此您无法调用它。 @Alireza Bideli -
你可以将你的对象转换成 Circle,然后调用它的方法@JMP
-
@AlirezaBideli 或者他可以将他的对象投射到
Duck并调用它的quack()方法:) 然后捕获ClassCastException,如果被捕获,告诉用户“你的鸭子已经煮熟了并且不再支持嘎嘎声”:)
标签: java design-patterns class-hierarchy