recursividad indirecta
¿c贸mo es posible compilar 2 clases en java que se llaman mutuamente una a la otra?
Y Si no es posible, ¿q soluci贸n tiene?
En pascal me acuerdo q se pod铆a hacer una la declaraci贸n de funciones de un m贸dulo, y eso permit铆a la recursi贸n indirecta para cualquier otro m贸dulo si 茅ste tambi茅n declaraba sus funciones.
Pero en java no veo c贸mo. ¿Es una limitaci贸n del lenguaje?
Y Si no es posible, ¿q soluci贸n tiene?
En pascal me acuerdo q se pod铆a hacer una la declaraci贸n de funciones de un m贸dulo, y eso permit铆a la recursi贸n indirecta para cualquier otro m贸dulo si 茅ste tambi茅n declaraba sus funciones.
Pero en java no veo c贸mo. ¿Es una limitaci贸n del lenguaje?
Seguro que no se puede?
Acabo de crear estas dos clases:
public class B {
A a=new A();
public void f(){
a.f();
}
}
public class A {
B b = new B();
public void f(){
b.f();
}
}
en ficheros diferentes y he compilado sin ningun problema.
Aunque no se si es esto lo que buscas...
Saludos!
Acabo de crear estas dos clases:
public class B {
A a=new A();
public void f(){
a.f();
}
}
public class A {
B b = new B();
public void f(){
b.f();
}
}
en ficheros diferentes y he compilado sin ningun problema.
Aunque no se si es esto lo que buscas...
Saludos!
Amigo, pues tienes toda la raz贸n, el c贸digo que indicas compila perfectamente.
Aprovechando ese mismo c贸digo y, miniaturizando mi problema, a m铆 lo que me sigue sin compilar es esto otro:
package AB;
public class A {
B b = new B();
public void f(){
b.f();
}
}
package AB;
public class B {
A a=new A();
public void f(){
a.f();
}
}
LA SALIDA ES:
# javac A.java
A.java:4: cannot resolve symbol
symbol : class B
location: class AB.A
B b = new B();
^
A.java:4: cannot resolve symbol
symbol : class B
location: class AB.A
B b = new B();
^
2 errors
Y los mismos errores al compilar B.java
S贸lo es cambiar el paquete por defecto por otro llamado AB.
Seguramente es una chorrada pero no acabo de verlo.
Por otro lado, acabo de ver que as铆 S脥 que COMPILA:
# javac A.java B.java
GRACIAS, ha sido muy positiva tu ayuda, heihachi.
Aprovechando ese mismo c贸digo y, miniaturizando mi problema, a m铆 lo que me sigue sin compilar es esto otro:
package AB;
public class A {
B b = new B();
public void f(){
b.f();
}
}
package AB;
public class B {
A a=new A();
public void f(){
a.f();
}
}
LA SALIDA ES:
# javac A.java
A.java:4: cannot resolve symbol
symbol : class B
location: class AB.A
B b = new B();
^
A.java:4: cannot resolve symbol
symbol : class B
location: class AB.A
B b = new B();
^
2 errors
Y los mismos errores al compilar B.java
S贸lo es cambiar el paquete por defecto por otro llamado AB.
Seguramente es una chorrada pero no acabo de verlo.
Por otro lado, acabo de ver que as铆 S脥 que COMPILA:
# javac A.java B.java
GRACIAS, ha sido muy positiva tu ayuda, heihachi.
Releyendo el post veo que el submit de este formulario tambi茅n tiene una errata en su funcionamiento (veo erratas por todas partes o estoy paranoico...), a saber:
La marquita del segundo error no es en la primera B sino en la segunda B (la del constructor). El copy.paste funciona bien, de eso estoy seguro...:)
La marquita del segundo error no es en la primera B sino en la segunda B (la del constructor). El copy.paste funciona bien, de eso estoy seguro...:)