2017-05-05 93 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添加了一個通用參數。這是一個無法壓制的錯誤。