Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Unchecked or unsafe operations" error when compiling [duplicate]

I am novice at Java programming, and I'm trying to add a list of files to a crude little media player. Seemingly I've succeeded in achieving what I want with this:

public class MusicPlayerGUI
    implements ActionListener
{
    private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));

    private JList tracklist;
    private MusicPlayer player;
    private FileOrganizer organizer;
    private List<String> tracks;
    private JFrame frame;

public MusicPlayerGUI()
{
    player = new MusicPlayer();
    organizer = new FileOrganizer();
    tracks = organizer.listAllFiles();
    makeFrame();
}

//Some methods omitted

public void play()
{
    int fileToPlay = tracklist.getSelectedIndex();
    String filenameToPlay = organizer.getFile(fileToPlay);
    player.play(filenameToPlay);
}

public void setupList()
{
    tracks = organizer.listAllFiles();
    String[] fileList = listAllTracks(tracks);
    tracklist.setListData(fileList);
}

public String[] listAllTracks(List<String> tracks)
{
    int numTracks = tracks.size();
    String[] fileList = new String[numTracks];
    for(int i = 0; i < numTracks; i++) {
        String field = tracks.get(i).toString();

        fileList[i] = field;
    }

    return fileList;
}

But when I compile, even if it does compile, it gives me an error stating:

[pathname]/classname.java uses unchecked or unsafe operations. Recompile with Xlint:unchecked for details

And everything in my player works, except it won't play the files, so I'm thinking that there might be a connection between the compiler warning I get, and the fact that the files won't play. Can anyone spot what I'm getting wrong?

like image 560
SorenRomer Avatar asked Mar 20 '23 23:03

SorenRomer


1 Answers

This happens when you assign a raw version of something to a version with a generic type parameter, like this:

List<String> list = new ArrayList(); // Note missing <String>

So my guess is that the listAllFiles method of FileOrganizer (whatever that is) returns List, not List<String>. Edit: Or user1631616 may have spotted it with your use of JList.

like image 152
T.J. Crowder Avatar answered Apr 06 '23 04:04

T.J. Crowder