Re: Error updating code to 1.5
inanetheory@gmail.com wrote:
I just need some help figuring out how to solve this, cause I'm stuck.
Error: java.lang.Comparable cannot be inherited with different
arguments: <> and <java.io.File>
<------------ Code ------------>
import java.util.*;
import java.io.File;
import java.text.Collator;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import javax.swing.event.TreeModelListener;
import javax.swing.event.TreeModelEvent;
private class FileTreeNode extends File implements Comparable
{
public FileTreeNode(File file)
{
super(file, "");
}
/**
* Compare two FileTreeNode objects so that directories
* are sorted first.
*
* @param object Object to compare to.
* @return Compare identifier.
*/
public int compareTo (Object object)
{
File file1 = this;
File file2 = (File) object;
Collator collator = Collator.getInstance();
if (file1.isDirectory() && file2.isFile())
return -1;
else if (file1.isFile() && file2.isDirectory())
return +1;
else
return collator.compare(file1.getName(), file2.getName());
}
My first suggestion is that you change your FileTreeNode from "is a
File" to "Has a File". And make it comparable to its own type.
private class FileTreeNode implements Comparable<FileTreeNode> {
private final File file;
public FileTreeNode(File file) {
this.file = file;
}
/**
* Compare two FileTreeNode objects so that directories
* are sorted first.
*
* @param object Object to compare to.
* @return Compare identifier.
*/
public int compareTo (FileTreeNode object) {
final File file1 = this.file;
final File file2 = object.file;
Collator collator = Collator.getInstance();
if (file1.isDirectory() && file2.isFile())
return -1;
else if (file1.isFile() && file2.isDirectory())
return +1;
else
return collator.compare(file1.getName(), file2.getName());
}
}
Hope this helps.
Daniel.