什么是解决Eclipse警告的正确方法"未参数化"?

Mor*_*nar 5 java eclipse warnings

我试图在一些旧的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. */
}
Run Code Online (Sandbox Code Playgroud)

List会生成一个警告,因为它没有参数化,但是,如果我参数化它<File>,我很确定它需要什么,它抱怨它无法转换ObjectList<File>.我只能抑制函数的未经检查的警告,但如果有一个"好的"解决方案,我宁愿避免这种情况.思考?

Ada*_*ter 6

我建议明确地将结果转换为List<File>并禁止警告.根据文件:

public static final DataFlavor javaFileListFlavor

要向/从Java(和底层平台)传输文件列表,使用此类型/子类型和表示类的DataFlavor java.util.List.列表的每个元素都是必需的/保证是类型的java.io.File.

在文档明确定义数据类型的情况下,可以根据Joshua Bloch的Effective Java(第116页)第24项随意忽略警告:

如果您无法消除警告,并且您可以证明引发警告的代码是类型安全的,那么(并且仅在此时)使用@SuppressWarnings("unchecked")注释来抑制警告.