Есть ли что-нибудь похожее на .NET NotImplementedException
в Java?
Есть ли что-нибудь похожее на .NET NotImplementedException
в Java?
Ответы:
У Commons Lang есть это. Или вы могли бы бросить UnsupportedOperationException
.
Я думаю, java.lang.UnsupportedOperationException
это то, что вы ищете.
new UnsupportedOperationException("Not implemented yet")
- счастлив?
Вы можете сделать это сами (это я и сделал) - чтобы не беспокоиться об обработке исключений, вы просто расширяете RuntimeException, ваш класс может выглядеть примерно так:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
Вы можете расширить его, чтобы получить сообщение - но если вы используете метод, как я (то есть, как напоминание, что еще нужно что-то реализовать), то обычно нет необходимости в дополнительных сообщениях.
Смею сказать, что я использую только этот метод, пока я нахожусь в процессе разработки системы, так что мне легче не забывать, какие методы все еще не реализованы должным образом :)
UnsupportedOperationException
на мой взгляд. Теперь, если бы только Java добавила это в общую библиотеку исключений!
Как уже упоминалось, JDK не имеет близкого соответствия. Тем не менее, моя команда иногда использует и такое исключение. Мы могли бы поступить так, UnsupportedOperationException
как подсказывают другие ответы, но мы предпочитаем собственный класс исключений в нашей базовой библиотеке, в котором отсутствуют конструкторы:
public class NotYetImplementedException extends RuntimeException
{
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException()
{
}
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException(String message)
{
super(message);
}
}
Этот подход имеет следующие преимущества:
NotYetImplementedException
, они знают, что реализация была запланирована и была либо забыта, либо все еще выполняется, тогда как UnsupportedOperationException
говорит (в соответствии с договорами о сборе ), что что-то никогда не будет реализовано. Вот почему у нас есть слово «пока» в названии класса. Также в IDE можно легко перечислить сайты вызовов.import
строке ( хотя JDK 9 исправил это ).Нет, нет, и, вероятно, его нет, потому что для него очень мало действительных применений. Я бы дважды подумал, прежде чем его использовать. Кроме того, это действительно легко создать себя.
Пожалуйста, обратитесь к этой дискуссии о том, почему это даже в .NET.
Я думаю UnsupportedOperationException
, что это близко, хотя и не говорит, что операция просто не реализована, но даже не поддерживается. Это может означать, что действительная реализация невозможна. Почему операция не поддерживается? Должен ли он вообще быть там? Сегрегация интерфейса или вопросы подстановки Лисков может быть?
Если бы это было в процессе разработки, я бы пошел ToBeImplementedException
, но я никогда не ловил себя на том, чтобы определить конкретный метод, а затем оставлял его так долго, что он превращал его в производство, и возникла бы необходимость в таком исключении.