2017-05-05 63 views
0

我使用下面的代码,我发现(How can I use Drag-and-Drop in Swing to get file path?从ABika)做拖放:@SuppressWarnings(“未登记”),不拖工作拖放

final class FileDropHandler extends TransferHandler { 
    @Override 
    public boolean canImport(TransferHandler.TransferSupport support) { 
     for (DataFlavor flavor : support.getDataFlavors()) { 
      if (flavor.isFlavorJavaFileListType()) { 
       return true; 
      } 
     } 
     return false; 
    } 

    @Override 
    @SuppressWarnings("unchecked") 
    public boolean importData(TransferHandler.TransferSupport support) { 
     if (!this.canImport(support)) 
      return false; 

     List<File> files; 
     try { 
      files = (List<File>) support.getTransferable() 
        .getTransferData(DataFlavor.javaFileListFlavor); 
     } catch (UnsupportedFlavorException | IOException ex) { 
      // should never happen (or JDK is buggy) 
      return false; 
     } 

     for (File file: files) { 
      // do something... 
     } 
     return true; 
    } 
} 

处理程序,然后添加到一个零件。

但问题是,尽管“@SuppressWarnings(”未登记“)”,我得到了一个错误:

The type List is not generic; it cannot be parameterized with arguments < File>

谁能告诉我这里有什么问题?看起来很直截了当。 感谢

+2

无法重现。也许你有另一个名为List的类? – assylias

+1

请添加您的进口。我认为'List'类不是来自'java.util' – QBrute

回答

1

方法getTransferData应该在这种情况下返回java.util.List但要导入java.awt.List,无论是作为一个单一型的import语句即import java.awt.List;或进口点播声明即import java.awt.*;。如果您有前者,则需要将其更改为java.util.List,如果您有后者,则需要将java.awt中的每个类别导入为单一类型导入,或者在importData方法中使用合格的List类型名称,如java.util.List<File>

+1

这很好! 我本来可以保存最近3个小时。 谢谢! – njun

0

抑制“未检查​​”警告只适用于像通用转换一样进行未检查操作的泛型类型。它不会像在非泛型类型上放置泛型参数那样压制彻底的错误。您向非通用类型List添加了一个通用参数。这是一个无法压制的错误。