Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ezequiel Aranda
Sun Microsystems Campus
Ambassador
AGENDA
>Generics Vs. Arrays
>Clases internas
>Clases internas regulares
>Clases internas locales a un mtodo
>Clases internas annimas
>Clases estticas anidadas
Bird
Cat
Dog
// dogs: List<Dog>
doc.checkAnimals(cats);
// cats: List<Cat>
>Porqu no funciona?
>Cmo solucionarlo?
// OK
animals.add(new Dog());
// OK
>Funciona a veces:
public void addAnimal(ArrayList<Animal>
animals) {
animals.add(new Dog());
}
class MyOuter {
private int x = 7;
class MyInner {
public void seeOuter() {
System.out.println("Outer x is
" + x); }}
}
this
>this es una referencia al objeto que esta en
ejecucin actualmente.
public void myMethod() {
MyClass mc = new MyClass();
mc.doStuff(this);
}
class Popcorn {
public void pop() {
System.out.println("popcorn");
}
}
class Food {
Popcorn p = new Popcorn() {
public void sizzle() {
System.out.println("anonymous sizzling
popcorn");
}
public void pop() {
System.out.println("anonymous popcorn");
}
};
public void popIt() {
p.pop(); // OK
p.sizzle(); //KO
}}
Porqu no funciona?
class MyWonderfulClass {
Clases internas annimas:
void go() {
clases definidas en
Bar b = new Bar();
argumentos
b.doStuff(new Foo() {
public void foof() {
System.out.println("foofy");
} // fin foof
}); //fin inner class y declaracin del mtodo
} // fin go()
} // fin class
interface Foo {
void foof();
}
class Bar {
void doStuff(Foo f) { }
}
Preguntas