En la página principal de los foros
encontrarás los enlaces al
feed general
y al de cada uno de los foros.
Subscribete para mantenerte informado de los cambios y responde a las dudas siempre que te sea posible
No me ha funcionado poniendo en NetBeans -target 1.4 -source ...
Efectivamente, lo que dice greeneyed. Si estas usando funcio ...
ah...vale llamé primero al constructor y después ya funciona ...
no eso no me vale, las he inicializado tal como me has conta ...
Guenas. Con la linea cordenadas []canvas=new cordenadas[5]; ...
| ¿Por qué no compila este código? | 04/02/2010 22:47 | |
| anonymous |
¿Alguien me pude decir por qué no se compila esta clase java con la versión SDK6 de SUN? Parece ser que con alguna versión anterior compilaba bien. javac FileElement.java //===== FileElement.java ========================= package org.jfm.views; import java.io.File; public class FileElement extends File implements Comparable { 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); } } public int compareTo(Object o) { FileElement el = (FileElement)o; if(isDirectory() && !el.isDirectory()) return -1; if(!isDirectory() && el.isDirectory()) return 1; else return toString().compareTo(el.toString()); } private boolean topFile; }
|
|
|
||
| RE: ¿Por qué no compila este código? | 04/02/2010 23:01 | |
| JorgeRubira |
Buenas, Posiblemente en el JDK hayan definido Comparable de la clase File como Comparable<File> así que tienes que poner Comparable<File> Además en el compareTo deberás cambiar Object por File. Tras estos cambios comprueba que el código sigue funcionando como hasta ahora. Saludos, Jorge |
|
|
||
| RE: ¿Por qué no compila este código? | 04/02/2010 23:09 | |
| anonymous |
Jorge gracias por responde. Probaré haciendo lo que me dices para ver si funciona. Perdona que esté en el foro como anónimo, pero no sé que está ocurriendo que no me deja loguearme y el administrador aun no me ha resuelto el problema. ipadilla
|
|
|
||
| RE: ¿Por qué no compila este código? | 04/02/2010 23:25 | |
| anonymous |
Jorge, haciendo lo que me has dicho desaparece el error y construye la aplicación, pero no me carga el árbol de directorios. ¿alguna sugerencia? gracias ipadilla |
|
|
||
| RE: ¿Por qué no compila este código? | 04/02/2010 23:56 | |
| JorgeRubira |
Buenas Desconozco como tienes el código y aunque es dar palos de ciego yo probaría... FileElement el = (FileElement)o; Esta línea quitarla y utilizar directamente el parámetro o. Pero como te digo, es probar por probar. Si te diese alguna excepcion imagino que sería un CastException. Si te dá algún mensaje o algo, comentalo. Si no te funciona con eso, la unica solución es depurarlo. Saludos, Jorge
|
|
|
||
| RE: ¿Por qué no compila este código? | 05/02/2010 00:29 | |
| anonymous |
Jorge, tu no das palos de ciego, tu sabes mucho de este tema. haciendo lo que mes dicho funciona perfectamente, pero no entiendo por qué. Si no estoy abusando de tu buena colaboración me podrías explicar brevemente porque funciona de esta manera y no de la otra. Muchísimas gracias ipadilla
|
|
|
||
| RE: ¿Por qué no compila este código? | 05/02/2010 07:00 | |
| JorgeRubira |
Ha habido suerte! :) Sobre la explicación, faltaría más! Cuando se utiliza el compareTo es porque hay un Collection.sort o algoritmo similar en algún sitio de tu código o bién del código del JDK. Pues bién, cuando cargues del disco duro los ficheros y al intentar ordenar, suponer que absolutamente todos los elementos deben de se FileElement cuando quizá el JDK lo utilice también con File puede ser propenso a errores. Quitar el Cast a FileElement te baja la probabilidad de que tu aplicación de errores y la funcionalidad es la misma porque aunque la clase sea de tipo File siempre se invoca el método que está en la clase derivada en el caso de implementarla. Saludos, Jorge |
|
|
||
| RE: ¿Por qué no compila este código? | 05/02/2010 09:26 | |
| anonymous |
Jorge muchas gracias de nuevo, me has resuelto del problema. Finalmente la clase funciona después de las correcciones y queda de la forma siguiente: =========================================== ======= // Source File Name: FileElement.java ================================================= ipadilla
|
|
|
||
| RE: ¿Por qué no compila este código? | 06/02/2010 10:38 | |
| anonymous |
Pongo de nuevo la clase con una ligera mejora: // - Haciendo el casting solo una vez en public int compareTo(File o){} Si alguien detecta como se puede mejorar que lo diga y añadiremos las propuestas. Saludos ipadilla |
|
|
||
| RE: ¿Por qué no compila este código? | 08/02/2010 19:14 | |
| JorgeRubira |
Buenas File FileElement = (File)o; >>>> File FileElement = o; (Es lo mismo) Saludos, Jorge |
|
|
||