Java 解决Eclipse警告的正确方法是什么;isn';t参数化的“;?
我正试图清除一些旧Java代码(在Eclipse中)中的一些警告,我不确定在这种情况下应该做什么。该块大致如下所示:Java 解决Eclipse警告的正确方法是什么;isn';t参数化的“;?,java,eclipse,warnings,Java,Eclipse,Warnings,我正试图清除一些旧Java代码(在Eclipse中)中的一些警告,我不确定在这种情况下应该做什么。该块大致如下所示: Transferable content = getToolkit().getSystemClipboard().getContents( null ); java.util.List clipboardFileList = null; if( content.isDataFlavorSupported( DataFlavor.javaFileListFlavor ) ) {
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. */
}
列表生成一个警告,因为它不是参数化的,但是,如果我用
参数化它(我很确定这是它所需要的),它会抱怨它无法从对象
转换到列表
。我只能抑制函数的未检查警告,但如果有“好”的解决方案,我更愿意避免这种情况。想法?试试这个
java.util.List<?>
java.util.List
我认为您不需要使用
。这对我来说很好
Object obj = null;
List<File> aa = (List<File>)obj;
objectobj=null;
列表aa=(列表)obj;
我建议显式地将结果强制转换为列表
并取消警告。根据:
publicstaticfinaldataflavor javaFileListFlavor
要在Java(和底层平台)之间传输文件列表,使用这种类型/子类型的DataFlavor和Java.util.list
表示类。列表中的每个元素都需要/保证为java.io.File
类型
根据Joshua Bloch的第24项(第116页),在文档明确定义数据类型的情况下,可以忽略警告:
如果无法消除警告,并且可以证明引发警告的代码是类型安全的,则(并且只有在那时)使用@SuppressWarnings(“unchecked”)
注释抑制警告
所以getTransferData()返回一个对象?哎呀,省去了一行内容是什么。这似乎起到了作用。仅仅告诉它我不知道是什么类型?还是比这更复杂?@Morinar,它做的更多一点:它说列表是一个特定类型的,这是未知的-而原始类型意味着它是一个可以包含不同类型元素的列表(因此不是类型安全的)。对不起,我不清楚。这并不是说它做不到,而是它是一个从对象到列表的
未经检查的强制转换。很抱歉,我使用了这个想法,但它并没有给出任何警告。这对我来说是有意义的,也是我所倾向的方向。只是好奇是否有“更好”的解决方案。@Morinar:可以理解。回答的目的是为您的决定提供专家(约书亚·布洛赫)的理由: