我正在尝试清除一些旧的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
。我只能抑制函数的未经检查的警告,但如果有一个“好的”解决方案,我宁愿避免这种情况。想法?
答案 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;