【发布时间】:2017-10-28 16:55:40
【问题描述】:
我想创建一个具有多参数的方法作为抽象方法。例如,对于错误消息,我需要 4 个参数来显示一条简单消息的位置,我只需要 2 个,依此类推。事实上,我想创建一个抽象方法来强制实现它,但允许使用不同数量的参数创建方法。有可能做这样的工作吗?如果没有,我该如何处理?
抽象类
public abstract void ShowDialog(AppCompatActivity dialogContext, Object... args);
实施
public void ShowDialog(AppCompatActivity dialogContext,String title,String message)
{ //Some code }
【问题讨论】:
-
您的实现方法签名与抽象的不匹配。不清楚你在问什么。如果你问,你似乎是,当你覆盖一个方法时你是否可以specialize,答案是否定的,你不能。当你重写时,你必须能够接受你正在重写的方法的参数。
-
@pvg 谢谢。那么创建这种方法的最佳方法是什么?我应该使用设计模式还是通过 Java 有其他方法来做到这一点?
-
我不确定您所说的“这种方法”是什么意思,所以这有点难以回答。也许您可以编辑您的问题,阐明您要完成的工作。
-
再一次,您的重写/实现方法不能是您要重写的方法的特化。如果你从“它必须能够将一个对象数组作为最后一个参数”开始,你不能说得很好,在这个子类实现中它只会接受一个字符串。这根本不是 Java 中编译时静态类型的工作方式。