我正在尝试清除一些旧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>参数化它,它会报错说它不能从Object转换为List<File>。我只能抑制函数的未检查警告,但如果有一个“好”的解决方案,我更愿意避免这种情况。有什么想法?
发布于 2010-03-24 02:08:51
我建议显式地将结果强制转换为List<File>,并取消警告。根据the documentation的说法
public static final DataFlavor javaFileListFlavor
为了在Java (和底层平台)之间传输文件列表,需要使用这种类型/子类型和表示类java.util.List的DataFlavor。列表中的每个元素都必须是/保证是java.io.File类型。
在文档中明确定义了数据类型的这种情况下,可以随意忽略警告,如Joshua Bloch的Effective Java (第116页)的第24项所示:
如果您不能消除警告,并且可以证明引发警告的代码是类型安全的,那么(也只有在那时)使用
@SuppressWarnings("unchecked")注释取消警告。
发布于 2010-03-24 01:53:52
尝尝这个
java.util.List<?>发布于 2010-03-24 01:57:44
我不认为你需要使用<?>。这对我来说很好吗?
Object obj = null;
List<File> aa = (List<File>)obj;https://stackoverflow.com/questions/2502306
复制相似问题