Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 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?

like image 619
Morinar Avatar asked Mar 23 '10 17:03

Morinar


2 Answers

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.

like image 156
Adam Paynter Avatar answered Nov 15 '22 03:11

Adam Paynter


Try this

java.util.List<?>
like image 40
Michael B. Avatar answered Nov 15 '22 04:11

Michael B.