Constructor rebelde

Hola, soy novato y no me aclaro con un constructor de una clase:
import java.io.*;
public class Programa{
private FileInputStream fichero;
public void Programa(String nombre){
fichero = new FileInputStream(fichero);
}
}
Hasta aquí todo va bien, pero cuando quiero usar la clase en otra clase en su método main me da el siguiente error: cannot resolve symbol constructor Programa
la clase quedaría así:
public class Asm51{
public static void main(String args[]){
if(args.length==1)
Programa prog = new Programa(args[0]);
}
}
¿Por qué no reconoce los argumentos del constructor? ¿Me puedes ayudar? He probado con un cast, un objeto String intermedio, ...
Gracias. Un saludo.

1 respuesta

Respuesta
Apartentemente la sintaxis del constructor esta bien, no encuentro ningún problema.
Tal vez el problema pueda estar en que no encuentra la clase Programa, para comprobar esto prueba a declarar un manejador de objetos de la clase programa, sin utilizar el constructor, algo como: Programa pg;
Si te aparece un error similar lo más probable es que el error se deba a eso.
Para solucionarlo la forma más rápida es que guardes una copia del fichero .class en el mismo directorio donde esta el programa desde donde lo invocas.
Otra solución es que crees un paquete y lo importes en el programa Asm51.
Creo que con esto no debes tener problemas para solucionar el fallo, pero si persiste ponte en contacto conmigo de nuevo.
Te agradecería que me finalizaras y puntuases la pregunta, ya tengo un montón pendientes.
Hola. Lo de la variable fichero ha sido un error tipográfico al escribirlo de nuevo. Lo he comprobado y seguimos en las mismas. ¡Toi desesperado!
Gracias por tu paciencia.
Te has esforzado, pero la respuesta era que había puesto el tipo void en el constructor, por eso fallaba. De todas formas, gracias.
Hola. Antes de preguntarte probé lo siguiente:
import java.io.*;
public class Programa{
public String prueba;
private FileInputStream fichero;
public void Programa(){
// no hace nada
}
public void Abrir(){
fichero = new FileInputStream(fichero);
}
}
Creo una propiedad de la clase String que manipularé desde Asm51 y creo un método adicional.
public class Asm51{
public static void main(String args[]){
if(args.length==1)
Programa prog = new Programa();
prog.prueba = args[0];
prog.Abrir();
}
}
Y esto sí funciona. ¿Cuál será el problema?
P.D.: uso el J2 SDK 1.4.2
Uhhmmm...
La verdad es que la solución siempre suele ser la más sencilla, y siempre se nos pasa por alto... esta justo aquí:
public void Programa(String nombre){
fichero = new FileInputStream(fichero);
}
Si te fijas el constructor recibe un parámetro que se llama nombre y tu intentas crear un FileInputStream pasándole como parámetro "fichero", en vez del objeto "nombre" que ha recibido como parámetro.
Esta vez creo que si funcionara!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas