Использование fscanf для чтения / tokenise файла всегда приводит к хрупкому коду или болью и страданиям. Чтение строки, а также токенизация или сканирование этой линии безопасны и эффективны. Ему нужно больше строк кода, а это значит, что требуется больше времени, чтобы ДУМАТЬ о том, что вы хотите сделать (и вам нужно обрабатывать размер конечного входного буфера), но после этого жизнь просто воняет меньше.
t бой fscanf. Просто не используйте его. Когда-либо.
Иногда Java-шаблоны просто не позволяют вам делать то, что вы хотите, и вам нужно эффективно сообщить компилятору, что то, что вы делаете, на самом деле будет законным во время выполнения.
Я обычно нахожу это проблемой, когда высмеиваю общий интерфейс, но есть и другие примеры тоже. Обычно стоит попытаться найти способ избежать предупреждения, а не подавить его (здесь помогает часто задаваемые вопросы по Java Generics ), но иногда, даже если это возможно, код искажается. формы настолько сильно, что подавление предупреждения становится более аккуратным. В этом случае всегда добавляйте пояснительный комментарий!
В том же FAQ по универсальным шаблонам есть несколько разделов по этой теме, начиная с «Что такое« непроверенное »предупреждение?» - его стоит прочитать.
] действительно ли выполнение будет законным во время выполнения.Я обычно нахожу это неприятным, когда высмеиваю общий интерфейс, но есть и другие примеры. Обычно стоит попытаться найти способ избежать предупреждения, а не подавить его (здесь помогает FAQ по Java Generics ), но иногда, даже если это возможно, код искажается. формы настолько сильно, что подавление предупреждения становится более аккуратным. В этом случае всегда добавляйте пояснительный комментарий!
В том же FAQ по универсальным шаблонам есть несколько разделов по этой теме, начиная с «Что такое« непроверенное »предупреждение?» - его стоит прочитать.
действительно ли выполнение будет законным во время выполнения.Я обычно нахожу это неприятным, когда высмеиваю общий интерфейс, но есть и другие примеры. Обычно стоит попытаться найти способ избежать предупреждения, а не подавить его (здесь помогает FAQ по Java Generics ), но иногда, даже если это возможно, код искажается. формы настолько сильно, что подавление предупреждения становится более аккуратным. В этом случае всегда добавляйте пояснительный комментарий!
В том же FAQ по универсальным шаблонам есть несколько разделов по этой теме, начиная с «Что такое« непроверенное »предупреждение?» - его стоит прочитать.
Обычно стоит попытаться найти способ избежать предупреждения, а не подавить его (здесь помогает FAQ по Java Generics ), но иногда, даже если это возможно, код искажается формы настолько сильно, что подавление предупреждения становится более аккуратным. В этом случае всегда добавляйте пояснительный комментарий!В том же FAQ по универсальным шаблонам есть несколько разделов по этой теме, начиная с «Что такое« непроверенное »предупреждение?» - его стоит прочитать.
Как правило, стоит попытаться найти способ избежать предупреждения, а не подавить его (здесь помогает FAQ по Java Generics ), но иногда, даже если это возможно, код искажается формы настолько сильно, что подавление предупреждения становится более аккуратным. В этом случае всегда добавляйте пояснительный комментарий!В том же FAQ по универсальным шаблонам есть несколько разделов по этой теме, начиная с «Что такое« непроверенное »предупреждение?» - его стоит прочитать.
]It could also mean that the current Java type system version isn't good enough for your case. There were several JSR propositions / hacks to fix this: Type tokens, Super Type Tokens, Class.cast().
If you really need this supression, narrow it down as much as possible (e.g. don't put it onto the class itself or onto a long method). An example:
public List<String> getALegacyListReversed() {
@SuppressWarnings("unchecked") List<String> list =
(List<String>)legacyLibrary.getStringList();
Collections.reverse(list);
return list;
}
Насколько мне известно, на данный момент это связано с подавлением предупреждений о дженериках; дженерики - это новая программная конструкция, не поддерживаемая в версиях JDK до JDK 5, поэтому любое смешение старых конструкций с новыми может привести к неожиданным результатам.
Компилятор предупреждает программиста об этом, но если программист уже знает, он может отключить эти ужасные предупреждения с помощью SuppressWarnings.
Это аннотация для подавления предупреждений компиляции о непроверенных общих операциях (не исключениях), таких как слепки. По сути, это означает, что программист не хотел получать уведомления об этом, о чем он уже знает при компиляции определенного бита кода.
Вы можете прочитать больше об этой конкретной аннотации здесь:
Кроме того, Oracle предоставляет некоторую учебную документацию по использованию аннотаций здесь:
По их словам,
«Предупреждение« непроверено »может появиться при взаимодействии с устаревшим кодом, написанным до появления дженериков (обсуждается в урок под названием Generics). "
Аннотация SuppressWarning используется для подавления предупреждений компилятора для аннотированного элемента. В частности, категория unchecked
позволяет подавлять предупреждения компилятора, генерируемые в результате непроверенных преобразований типов.