2016-12-13 2 views
-1

Я хотел бы знать, есть ли какой-нибудь хороший способ в java, чтобы показать, что какой-либо метод никогда не должен вызываться? Я думаю на случай, что я работаю с более крупной командой и расскажу ребятам, что этот метод никогда не будет вызван, поэтому не пытайтесь его протестировать. Может быть, утверждение - хорошая идея?Метод Mark as никогда не должен использоваться

Контекст: я использую ReactiveX в java, и мой Observable никогда не будет остановлен, он может вызывать только onError и onNext, но onCompleted никогда не будет вызываться, но мой Observer расширяет подписчик, поэтому мне нужно @Override onCompleted.

+2

@Deprecated аннотация. – Kon

+6

Можете ли вы не просто удалить метод или выбросить UnsupportedOperationException? – BretC

+0

Но @Deprecated следует использовать со старым методом, который только для обратной совместимости я думаю. Вот почему я спрашиваю о хорошем способе сказать, что этот метод не будет вызываться в программе, а не он не должен вызываться. –

ответ

1

Если вы не хотите, чтобы другие вызывали метод, используйте аннотацию @Deprecated с соответствующим документом java.
Обратите внимание, что это просто указание вызывающему, хотя они все равно могут вызвать метод.

+0

Как я писал в комментарии ниже моего вопроса, мне не нравится идея использования Устаревшая в такой ситуации –

2

@Deprecated - самая близкая стандартная вещь, и бросать UnsupportedOperationException - это разумная вещь, которую можно сделать во многих подобных случаях.

Обратите также внимание, что из-за полиморфизма вызывающий может не знать конкретного типа Observer, который они вызывают до выполнения, поэтому никакая аннотация не может помочь.

Однако, в случае, о котором вы описали, я думаю, что вы должны написать пустую реализацию onCompleted() и тест, который просто утверждает, что он не генерирует исключение. Несмотря на то, что вы решили, что Observable никогда не перестанет производиться, не кажется разумным бросать исключение, если однажды он это сделает.

+0

Я думаю, что лучший тест - проверить, что он должен выбросить исключение, чтобы убедиться, что контракт с моим Observable никогда прекращается производство элементов. Если кто-то изменит его, то тест не пойдет, и мы узнаем, что кто-то попытался разорвать контракт. –