2015-05-09 3 views
1

Для следующего класса, какова правильная реализация интерфейса Callable?Теория экзаменов Java Core

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? Есть ли способ дифференцировать? Я знаю, что исключение Runtime является исключенным исключением и что исключение проверено, но есть ли намек на вопрос, чтобы сказать мне, что это класс исключений? Если бы я не реализовал это в Eclipse, я бы не знал, что метод вызова не принимает параметр String, поэтому он будет либо C, либо D. Как я должен знать, что ответ был выбраковкой Exception?

ответ

1

При реализации методы, вы должны указать тот же самый интерфейс, который

V call() throws Exception 

как doc сай. Однако вы можете сделать предложение throws более ограничительным, что означает, что вы можете указать, что вы бросаете, то есть RuntimeException, как здесь, - это подкласс Exception. Поэтому заявление throws здесь не говорит вам ответа. Это аргументы и тип возвращаемого значения.

Возвращаемый тип здесь должен быть List<Set<String>>, так как он указан в качестве V параметра (как в doc снова) в

class Process implements Callable<List<Set<String>>>{ } 

Другое дело, что call() метод не принимает никаких аргументов.

Принимая во внимание, только ответ D остается здесь. Он возвращает соответствующий тип и не принимает аргументов. Надеюсь, это поможет вам!

+1

Но без доступа к документации я бы не знал, что метод вызова вызывает исключение. Есть ли какие-либо подсказки внутри вопроса или это просто до того, есть ли у вас опыт работы с интерфейсом? –

+1

Я думаю, что это вопрос знания интерфейса. Без этого вы не могли бы знать, какие аргументы вызывают() и что он возвращает. Obvoiusly, вы можете исключить A в самом начале, из-за типа возврата - по интуиции, такой тип не задается нигде в вопросе, поэтому наиболее вероятно (но не уверен, если не зная интерфейс), что он неверен. – rasmeta

+0

Это отличный друг, приветствия. –

Смежные вопросы