对于以下类,Callable接口的正确实现是什么?
class Process implements Callable<List<Set<String>>>{ }
A. public Future< List<Set<String>>> call() throws Exception
B. public void call(List<Set<String>> data) throws RuntimeException
C. public List<Set<String>> call(String data) throws RuntimeException
D. public List<Set<String>> call() throws Exception
我在Eclipse中实现了这个,答案是D.我想知道的是,我怎么知道这个类是否会抛出异常或RuntimeException?有没有办法区分?我知道运行时异常是一个未经检查的异常,并且检查了异常,但在问题的某处有一个提示告诉我它是Exception类吗?如果我没有在Eclipse中实现这一点,我就不可能知道调用方法不接受String参数,因此它可能是C或D.我应该怎么知道答案是抛出异常?
答案 0 :(得分:1)
在实现该方法时,您必须指定完全相同的接口,即
V call() throws Exception
像doc sais一样。但是,您可以使throws
子句更具限制性,这意味着您可以指定像这里一样抛出RuntimeException
- 这是Exception
的子类。因此,此处的throws
声明并未告诉您答案。这些是参数和返回类型。
此处的返回类型必须为List<Set<String>>
,因为它在
V
参数(如doc中所示)
class Process implements Callable<List<Set<String>>>{ }
另一件事是call()
方法不带任何参数。
考虑到这些,只留下答案D.它都返回一个合适的类型,不带任何参数。希望它能帮到你!