Ok, I've been looking around and done alot of google searching, but I still can't find a way to avoid this warning.
Integer result = chooser.showOpenDialog(null);
if (result.equals(0))
{
String tempHolder = chooser.getSelectedFile().getPath();
filenameLoad = new File(tempHolder);
filenameSave = filenameLoad;
FileInputStream fis = null;
ObjectInputStream in = null;
try
{
fis = new FileInputStream(filenameLoad);
in = new ObjectInputStream(fis);;
}
catch(IOException ex)
{
ex.printStackTrace();
}
try
{
loadFile = (ArrayList<Dot>)in.readObject();
}
catch(IOException ex)
{
System.out.println("Cast fail");
}
catch(ClassNotFoundException ex)
{
System.out.println("Cast fail");
}
catch (ClassCastException ex)
{
System.out.println("Cast fail");
}
try
{
in.close();
}
catch(Exception ex)
{
System.out.println("failed to close in");
}
save.setEnabled(true);
gpanel.setDotList(loadFile);
}
It gives me the warning at the line loadFile = (ArrayList)in.readObject(); I've added in the catchs so i'm not sure why it still says its uncatched. Any help? thanks?
It means the compiler cannot check that the object you read in, matches the type you are casting it to. Thus the unchecked warning.
BTW: You might want to work on your error handling to make it simpler and clearer. ;)
What you see is a compiler warning that you are trying to convert an Object into a
ArrayList<Dot>
without first checking if the Object actually contains a List of Dot and not e.g. a List of Foo.You are not checking whether the object returned by
is really an
Use
It doesn't say
uncatched
(which correctly is spelleduncaught
), butunchecked
. You cannot avoid this warning when casting to a generic type, you can only suppress it. Or you can work around it:With this method you can write:
It is not "uncatched", but "unchecked". The JVM cannot tell at runtime, i.e. when the cast is done, whether the ArrayList really contains Dot elements.
This warning occurs whenever you cast from a raw type to a generic type. If you are sure the cast is ok, you can suppress the warning with annotation
For this, it is good to encapsulate the cast in a small, separate method.