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

时间:2010-03-23 17:49:54

标签: 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. */
}

List会生成一个警告,因为它没有参数化,但是,如果我用<File>对它进行参数化,我很确定它需要什么,它会抱怨它无法转换为{{ 1}}到Object。我只能抑制函数的未经检查的警告,但如果有一个“好的”解决方案,我宁愿避免这种情况。想法?

3 个答案:

答案 0 :(得分:6)

我建议明确地将结果转换为List<File>并禁止显示警告。根据{{​​3}}:

  

public static final DataFlavor javaFileListFlavor

     

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

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

  

如果您无法消除警告,并且您可以证明引发警告的代码是类型安全的,那么(并且只有这样)才会使用@SuppressWarnings("unchecked")注释来抑制警告。

答案 1 :(得分:4)

试试这个

java.util.List<?>

答案 2 :(得分:0)

我认为您不需要使用<?>。这对我来说效果很好吗?

Object obj = null;
List<File> aa = (List<File>)obj;