Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解决Eclipse警告的正确方法是什么;isn';t参数化的“;?_Java_Eclipse_Warnings - Fatal编程技术网

Java 解决Eclipse警告的正确方法是什么;isn';t参数化的“;?

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 ) ) {

我正试图清除一些旧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. */
}
列表生成一个警告,因为它不是参数化的,但是,如果我用
参数化它(我很确定这是它所需要的),它会抱怨它无法从
对象
转换到
列表
。我只能抑制函数的未检查警告,但如果有“好”的解决方案,我更愿意避免这种情况。想法?

试试这个

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:可以理解。回答的目的是为您的决定提供专家(约书亚·布洛赫)的理由: