Как сказал Эран, если вы просто хотите получить «промышленный стандарт» ClassCastException
, просто попытайтесь разыграть его и не используйте instanceof
.Если вы хотите, чтобы пользовательское исключение, ну, это зависит от того, что вы собираетесь.Нам нужно больше информации о том, что вы хотите, чтобы привести лучший пример.Я просто приведу случайный пример.
Например, если вы намереваетесь проверить и привести параметр метода или выполнить ошибку с пользовательским сообщением об ошибке, я обычно использую этот метод:
public static <T, S extends T> S requireType(Class<S> type, T actual, String varName) {
requireNonNull(actual, varName);
if (!type.isInstance(actual))
throw new IllegalArgumentException('\'' + varName + "' must be of type " +
type.getName() +": " + actual.getClass());
//noinspection unchecked // It is just checked
return (S)actual;
}
Тестрашные общие параметры обрабатываются автоматически, например:
FirmwarePacket castPacket = requireType(FirmwarePacket.class, packet, "packet");