Я пытаюсь очистить некоторые предупреждения в некотором старом коде 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>
. Я мог просто подавить предупреждение непроверенное для функции, но предпочту избегать этого, если существует "хорошее" решение. Мысли?
Я бы рекомендовал явно привести результат к List
и подавить предупреждение. Согласно документации :
public static final DataFlavor javaFileListFlavor
Для передачи списка файлов в / из Java (и базовой платформы) DataFlavor этого типа / подтипа и класса представления
java.util.List
используется. Каждый элемент списка должен / гарантированно иметь типjava.io.File
.
В такой ситуации, когда в документации четко определен тип данных, не стесняйтесь игнорировать предупреждения, согласно пункту 24 Джошуа Блоха Эффективная Java (стр. 116):
Если можете » Чтобы исключить предупреждение, и вы можете доказать, что код, вызвавший предупреждение, является безопасным по типу, затем (и только тогда) подавите предупреждение с помощью аннотации
@SuppressWarnings ("unchecked")
.
Я не думаю, что вам нужно использовать >
. Это просто отлично работает для меня?
Object obj = null;
List<File> aa = (List<File>)obj;