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...:)