@SuppressWarnings("unchecked") 不适用于拖放
@SuppressWarnings("unchecked") not working with drag and drop
我正在使用我找到的以下代码(How can I use Drag-and-Drop in Swing to get file path? 来自 ABika)进行拖放操作:
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("unchecked")”,我还是收到了一个错误:
The type List is not generic; it cannot be parameterized with arguments < File>
谁能告诉我这里出了什么问题?看起来很简单。
谢谢
在这种情况下,方法 getTransferData
应该 return a java.util.List
但您正在导入 java.awt.List
,或者作为单一类型的导入语句,即 import java.awt.List;
或作为按需导入语句,即 import java.awt.*;
。如果您有前者,则需要将其更改为 java.util.List
,如果您有后者,则需要从 java.awt
导入每个 class 作为单一类型导入,或者使用importData
方法中限定的 List
类型名称,如 java.util.List<File>
.
抑制 "unchecked" 警告仅适用于经历未经检查的操作(如泛型转换)的泛型类型。它不会抑制像将泛型参数放在非泛型类型上这样的彻底错误。您将泛型参数添加到非泛型类型 List
。这是一个无法抑制的错误。
我正在使用我找到的以下代码(How can I use Drag-and-Drop in Swing to get file path? 来自 ABika)进行拖放操作:
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("unchecked")”,我还是收到了一个错误:
The type List is not generic; it cannot be parameterized with arguments < File>
谁能告诉我这里出了什么问题?看起来很简单。 谢谢
在这种情况下,方法 getTransferData
应该 return a java.util.List
但您正在导入 java.awt.List
,或者作为单一类型的导入语句,即 import java.awt.List;
或作为按需导入语句,即 import java.awt.*;
。如果您有前者,则需要将其更改为 java.util.List
,如果您有后者,则需要从 java.awt
导入每个 class 作为单一类型导入,或者使用importData
方法中限定的 List
类型名称,如 java.util.List<File>
.
抑制 "unchecked" 警告仅适用于经历未经检查的操作(如泛型转换)的泛型类型。它不会抑制像将泛型参数放在非泛型类型上这样的彻底错误。您将泛型参数添加到非泛型类型 List
。这是一个无法抑制的错误。