Error java con new

Tengo el siguiente código:
class ClasesIntStatic {
public static void main(String [] arg) {
A a1=new A(11), a2=new A(12);
println("a1.i="+ a1.i + " a2.i="+ a2.i);
A.Bs b1 = new A.Bs(-10);
A.Bs b2 = a1.new Bs(-11);ERRROR
println("b1.j=" + b1.j + " b2.j=" + b2.j);
b1.printBs();
b2.printBs();
a1.printA(b1);
a1.printA(b2);
}
public static void println(String str) {System.out.println(str);}
}
class A {
int i = 1;
static int is = -1;
public A(int i) {this.i = i;}
public void printA(Bs unBs) {
System.out.println("i=" + i + " unBs.j=" + unBs.j);
}
static class Bs {
int j = 2;
public Bs(int j) {this.j = j;}
public void printBs() {
System.out.println(" j=" + j + " is=" + is);
}
}
}
me arroja el siguiente error:
nombre completo de la clase estática en la línea "A.Bs b2 = a1.new Bs(-11);"
Agradecería que me pudieran ayudar.
Elisa

1 respuesta

Respuesta
1
No tengo idea como te funciona ese código, el punto es que no puedes poner cosas como:
A.B b1 = a1.new B(-10), b2 = a1.new B(-20);
Ya que esas 2 sentencias deben ser escritas como:
B b1 = new B(-10);
B b2 = new B(-20);
En donde lo que estas diciendo b1 es de tipo B y es igual a un nuevo B.
El A.B es una indireccion de clases que no tiene sentido.
Por que este código si funciona.
class ClasesInternas {
public static void main(String [] arg) {
A a1=new A(11);
A a2=new A(12);
println("a1.i=" + a1.i + " a2.i=" + a2.i);
A.B b1 = a1.new B(-10), b2 = a1.new B(-20);
println("b1.j=" + b1.j + " b2.j=" + b2.j);
b1.printB();
b2.printB();
a1.printA(b1);
a1.printA(b2);
A a3=new A(13);
A.B b3 = a3.new B(-30);
println("be.j=" + b3.j);
a3=null;
b3.printB();
a3=new A(14);
b3.printB();
}
public static void println(String str) {
System.out.println(str);
}
}
class A {
int i=1;
public A(int i) {
this.i=i;
}
public void printA(B unB) {
System.out.println("i="+i+ " unB.j="+unB.j);
}
protected class B {
int j=2;
public B(int j) {
this.j=j;
}
public void printB() {
System.out.println("i=" + i + " j=" + j);
}
}
}
Elisa
Creo que no saber programas nada de nada... aunque alguien te responda tu problema después va a aparecer otro, ya que ese código es imposible que te compile...
El debes estudiar lo que hace el new...
Tu tienes 3 clases la ClasesIntStatic, la clase A y la clase Bs.. cuando haces un new lo que haces es reservar el espacio en memoria y llamar al constructor de esa clase.. por ejemplo tienes declarado:
class A
{
int hhh;
};
main()
{
A algo;
algo= new A();
}
En este caso estas diciendo: "tengo una clase llamada A que guarda un entero llamado hhh"... después en el main "tengo un objeto que se llama algo que es del tipo A... ahora el objeto llamado algo es un nuevo A"...
Si tienes más dudas estoy en kip289 arroba hotmail.com... (msn).. chaoz

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas