Что надлежащий путь состоит в том, чтобы разрешить, что Eclipse, предупреждающий “, не параметризован”?

Я пытаюсь очистить некоторые предупреждения в некотором старом коде Java (в Eclipse), и я не уверен, что правильный поступок в этом случае. Блок более или менее походит на это:

Transferable content = getToolkit().getSystemClipboard().getContents( null );
java.util.List clipboardFileList = null;

if( content.isDataFlavorSupported( DataFlavor.javaFileListFlavor ) ) {
  try {
    clipboardFileList = (java.util.List)content.getTransferData(
      DataFlavor.javaFileListFlavor);
  }
  /* Do other crap, etc. */
}

Список генерирует предупреждение, поскольку он не параметризован, однако, если я параметризовал его с <File>, то, которое я вполне уверен, - то, чего это требует, это жалуется, что не может преобразовать из Object кому: List<File>. Я мог просто подавить предупреждение непроверенное для функции, но предпочту избегать этого, если существует "хорошее" решение. Мысли?

5
задан Pyrolistical 23 March 2010 в 18:19
поделиться

3 ответа

Я бы рекомендовал явно привести результат к List и подавить предупреждение. Согласно документации :

public static final DataFlavor javaFileListFlavor

Для передачи списка файлов в / из Java (и базовой платформы) DataFlavor этого типа / подтипа и класса представления java.util.List используется. Каждый элемент списка должен / гарантированно иметь тип java.io.File .

В такой ситуации, когда в документации четко определен тип данных, не стесняйтесь игнорировать предупреждения, согласно пункту 24 Джошуа Блоха Эффективная Java (стр. 116):

Если можете » Чтобы исключить предупреждение, и вы можете доказать, что код, вызвавший предупреждение, является безопасным по типу, затем (и только тогда) подавите предупреждение с помощью аннотации @SuppressWarnings ("unchecked") .

6
ответ дан 13 December 2019 в 22:05
поделиться

Попробуйте это

java.util.List<?>
4
ответ дан 13 December 2019 в 22:05
поделиться

Я не думаю, что вам нужно использовать . Это просто отлично работает для меня?

Object obj = null;
List<File> aa = (List<File>)obj;
0
ответ дан 13 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: