Ver Mensaje Individual
  #10 (permalink)  
Antiguo 06/02/2010, 03:28
ipadilla
 
Fecha de Ingreso: enero-2010
Mensajes: 18
Antigüedad: 15 años
Puntos: 0
Respuesta: ¿Por qué no compila este código?

Hola devshared, aquí tienes tu propuesta realizada, tanto si hacemos el casting una vez como varias veces la clase funciona bien. Aquí tienes como he dejado ambas pruebas:

// - Haciendo el casting solo una vez.

package org.jfm.views;

import java.io.File;

public class FileElement extends File
implements Comparable<File>
{

public FileElement(String pathname)
{
this(pathname, false);
}

public FileElement(String pathname, boolean topFile)
{
super(pathname);
setTopFile(topFile);
}

public String toString()
{
if(isTopFile())
return "..";
else
return getName();
}

public void setTopFile(boolean topFile)
{
this.topFile = topFile;
}

public boolean isTopFile()
{
return topFile;
}

public FileElement getRootFile()
{
return getRootFile(this);
}

private FileElement getRootFile(FileElement f)
{
String parentPath = f.getParent();
if(parentPath == null)
{
return f;
} else
{
FileElement parent = new FileElement(parentPath);
return getRootFile(parent);
}
}
// - Haciendo el casting solo una vez.

public int compareTo(File o){
File FileElement = (File)o;
if(isDirectory() && !FileElement.isDirectory())
return -1;
if(!isDirectory() && FileElement.isDirectory())
return 1;
else
return toString().compareTo(FileElement.toString());
}
private boolean topFile;
}



// - Haciendo el casting varias veces.


package org.jfm.views;

Cast varias veces:

import java.io.File;

public class FileElement extends File
implements Comparable<File>
{

public FileElement(String pathname)
{
this(pathname, false);
}

public FileElement(String pathname, boolean topFile)
{
super(pathname);
setTopFile(topFile);
}

public String toString()
{
if(isTopFile())
return "..";
else
return getName();
}

public void setTopFile(boolean topFile)
{
this.topFile = topFile;
}

public boolean isTopFile()
{
return topFile;
}

public FileElement getRootFile()
{
return getRootFile(this);
}

private FileElement getRootFile(FileElement f)
{
String parentPath = f.getParent();
if(parentPath == null)
{
return f;
} else
{
FileElement parent = new FileElement(parentPath);
return getRootFile(parent);
}
}

// - Haciendo el casting varias veces.

public int compareTo(File o)
{
if(isDirectory() && !((File) (o)).isDirectory())
return -1;
if(!isDirectory() && ((File) (o)).isDirectory())
return 1;
else
return toString().compareTo(((File)(o)).toString());
}

private boolean topFile;
}

//==================

Si aun crees que se puede mejorar, no dudes en proponerlo.
Muchas gracias
ipadilla