Как правильно разрешить предупреждение Eclipse «не параметризовано»? - PullRequest
5 голосов
/ 23 марта 2010

Я пытаюсь очистить некоторые предупреждения в каком-то старом 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>. Я мог бы просто отключить непроверенное предупреждение для функции, но предпочел бы избежать этого, если есть «хорошее» решение. Мысли?

Ответы [ 3 ]

6 голосов
/ 23 марта 2010

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

public static final DataFlavor javaFileListFlavor

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

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

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

4 голосов
/ 23 марта 2010

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

java.util.List<?>
0 голосов
/ 23 марта 2010

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

Object obj = null;
List<File> aa = (List<File>)obj;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...