2015-08-29 3 views
3

Я только начинаю с java, и мне было интересно, может ли кто-нибудь сказать мне, есть ли способ использовать интерфейс в связанном списке. У меня есть интерфейс под названием «Вопрос». Я реализую из него два класса: 1) MCQ 2) TrueFalse. Мне нужен список интерфейсов вопросов, чтобы я мог иметь случайные MCQ и TrueFalse в моем списке. Возможно ли это на Java? Это то, что я зашел так далеко:Интерфейс Java: Может ли интерфейс использоваться в списке Linked?

private static List<Question> Questions; //declaring in a class 

Questions = new LinkedList<Question>(); //creating a linkedlist 

А потом просто добавьте к нему MCQ и TrueFalse.

+1

Какая ошибка у вас возникла? Мне все хорошо, я предлагаю вам попробовать. –

+0

Ошибка. Просто прояснил концепцию. Спасибо :) – fur866

+0

Нет ничего плохого. – Saud

ответ

0

То, что вы пишете, является правдой и действительностью.

questions = new LinkedList<Question>(); //creating a linkedlist 

То, что принимает все виды Question объектов. Чтобы добавить MCQ к нему, единственным правилом является ваш MCQ, а TrueFalse должен реализовать интерфейс Question. Если вы уже делаете это, вы в порядке.

Но будьте осторожны при доступе к ним. Поскольку вы получаете случайно, вы никогда не знаете, к какому объекту вы возвращаетесь. Если вы присвоите MCQ TrueFalse, произойдет ClassCastException. Чтобы избежать таких ситуаций, всегда используйте его тип (Вопрос).

+0

Не унывайте, если вы можете помочь. Это запах кода. Следовательно, в моем ответе упоминается добавление в интерфейсе достаточного количества методов, позволяющих выполнять операции, специфичные для конкретного типа, без downcasting. –

+0

@ ChrisJester-Young Я добавляю строку 'Чтобы избежать таких ситуаций, всегда используйте ее тип (Вопрос)' –

+0

@ ChrisJester-Young Я не предлагал кастинг здесь. ::: :) –

1

Да, вы можете использовать интерфейсы как аргумент типа связанного списка.

Вы должны определить достаточно методов в интерфейсе, чтобы иметь возможность обрабатывать все полезные функции для ваших MCQ и TrueFalses, без необходимости downcast.

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