开发者

What is the proper way to resolve Eclipse warning "isn't parameterized"?

I'm trying to clean up some warnings in some old Java code (in Eclipse), and I'm unsure what the proper thing to do is in this case. The block looks more or less like this:

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. */
}

The List generates a warning as it isn't parameterized, however, if I parameterize it with <File>, which I'm 开发者_JAVA技巧pretty sure is what it requires, it complains that it can't convert from Object to List<File>. I could merely suppress the unchecked warning for the function, but would prefer to avoid that if there is a "good" solution. Thoughts?


I would recommend explicitly casting the result to List<File> and suppressing the warning. According to the documentation:

public static final DataFlavor javaFileListFlavor

To transfer a list of files to/from Java (and the underlying platform) a DataFlavor of this type/subtype and representation class of java.util.List is used. Each element of the list is required/guaranteed to be of type java.io.File.

In such a situation where the documentation clearly defines the data type, feel free to ignore the warnings, as per Item 24 of Joshua Bloch's Effective Java (page 116):

If you can't eliminate a warning, and you can prove that the code that provoked the warning is typesafe, then (and only then) suppress the warning with an @SuppressWarnings("unchecked") annotation.


Try this

java.util.List<?>


I don't think you need to use <?>. This just works fine for me?

Object obj = null;
List<File> aa = (List<File>)obj;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜