|
InnerLocalAnonymous.java
|
import java.io.*;
public class InnerLocalAnonymous {
public static void main (String[] args) throws IOException{
OuterA o = new OuterA();
Keeper k1 = o.getKeeper1(1);
Keeper k2 = o.getKeeper2(2);
Keeper k3 = o.getKeeper3(3);
Keeper k4 = o.getKeeper4(4);
Keeper k5 = o.getKeeper5(5);
System.out.println(k1.getInt());
System.out.println(k2.getInt());
System.out.println(k3.getInt());
System.out.println(k4.getInt());
System.out.println(k5.getInt());
// m() does not exist to outside world of
// getKeeper5(). not compilable
// System.out.println(k5.m());
System.in.read();
}
}
class OuterA {
Keeper getKeeper1(final int i) {
//Local class
class MyKeeper1 implements Keeper {
public int getInt() {
return i;
}
}
// return local class instance
return new MyKeeper1();
}
Keeper getKeeper2(int i) {
// return inner class instance
return new MyKeeper2(i);
}
// inner class
class MyKeeper2 implements Keeper {
final int j;
MyKeeper2(int i) {j=i;}
public int getInt() {
return j;
}
}
Keeper getKeeper3(final int k) {
// return anonymous class instance
return new MyKeeper2(k){
public int getInt() {
return j + 4;
}
};
}
Keeper getKeeper4(final int i) {
// return anonymous class instance
// but different than getKeeper3()
return new Keeper(){
public int getInt() {
return i;
}
};
}
Keeper getKeeper5(final int i) {
// return anonymous class instance
// but different than getKeeper3() and getKeeper3()
// added a method noone else knows.
return new Keeper(){
public int getInt() {
return m();
}
// m() does not exist outside getKeeper5()
public int m() {
return i;
}
};
}
}
// The common interface
interface Keeper {
int getInt();
}
Last updated: 12-10-2002
Copyright © 1999 - 2003 Roseanne Zhang, All Rights Reserved