1

我了解接口和抽象类是什么,但我不知道如何获得以下功能;如果可能的话,那就是。我有一堆类,每个类都有一个validate()方法。每种方法可能采用不同的参数。例如,我们可以有具有以下方法的类:

boolean validate();
boolean validate(Block[]);
boolean validate(BlockSet[]);
...

所以,基本上我想知道我是否可以使用接口或抽象类或其他东西来定义合同以实现具有给定名称和返回类型的方法,但对参数集没有限制。提前致谢。

4

3 回答 3

5

您可以使用 validate(Object... args) 执行此操作,但值得质疑您是否真的想要这样做。接口和抽象类很有用,因此您可以将一堆相似的对象组合在一起,并让实现用相同的操作做不同的事情。在我看来,如果不知道底层实现是什么,您将无法调用此方法,因此没有理由抽象它们。

于 2013-06-23T05:28:18.400 回答
0

尝试在界面中使用可变参数:

boolean validate(Object... args)或者

'布尔验证(块...块)'

如果Blocks始终是一个集合,请使用它们的超类型:

boolean validate(Collection<Block> blocks)

但是你可能需要使用一些演员表。不是最佳选择。

于 2013-06-23T05:22:57.717 回答
0

如果您希望方法采用任意数量的 pf 参数,那么您可以使用 Varargs 但如果您希望它也更改类型,那么它是不可行的。

此外,您想要实现的是找到一种单独的方法重载方式,但为此您必须显式指定方法。

于 2013-06-23T05:29:43.193 回答