Annymous Inner Classes
hey, I'm trying to do this exercise about using inner classes to implement factories. in an interfaces chapter I used interfaces to implement factories like...
package ex18;
interface Cycle{}
interface CycleFactory{
Cycle getCycle();
}
class Unicycleimplements Cycle{
Unicycle(){
System.out.println("Unicycle");
}
}
class UnicycleFactoryimplements CycleFactory{
public Cycle getCycle(){
// TODO Auto-generated method stub
returnnew Unicycle();
}
}
class Bicycleimplements Cycle{
Bicycle(){
System.out.println("Bicycle");
}
}
class BicycleFactoryimplements CycleFactory{
public Cycle getCycle(){
// TODO Auto-generated method stub
returnnew Bicycle();
}
}
class Tricycleimplements Cycle{
Tricycle(){
System.out.println("Tricycle");
}
}
class TricycleFactoryimplements CycleFactory{
public Cycle getCycle(){
// TODO Auto-generated method stub
returnnew Tricycle();
}
}
publicclass Ex18{
publicstaticvoid cycleConsumer(CycleFactory fact){
Cycle cycle = fact.getCycle();
}
publicstaticvoid main(String[] args){
// TODO Auto-generated method stub
cycleConsumer(new UnicycleFactory());
cycleConsumer(new BicycleFactory());
cycleConsumer(new TricycleFactory());
}
}
So now I'm supposed to modify the above so that it uses inner classes. This is what I've come up with so far...
package ex16;
interface Cycle{}
interface CycleFactory{
Cycle getCycle();
}
class Unicycleimplements Cycle{
public Cycle getUnicycle(){
returnnew Cycle(){
//This doesn't work
//Syntax error on token(s), misplaced construct(s)
//System.out.println("Anonymous Unicycle");
};
}
}
class UnicycleFactoryimplements CycleFactory{
public Cycle getCycle(){
Unicycle unicycle =new Unicycle();
returnnew Unicycle().getUnicycle();
}
}
publicclass Ex16{
publicstaticvoid cycleConsumer(CycleFactory fact){
Cycle cycle = fact.getCycle();
}
publicstaticvoid main(String[] args){
// TODO Auto-generated method stub
cycleConsumer(new UnicycleFactory());
}
}
Can you tell me how I should use AICs to implement factories?

