public interface Human
{
public void getColor();
public void talk();
}
public class BlackHuman implements Human
{
@Override
public void getColor()
{
System.out.println("黑色");
}
@Override
public void talk()
{
System.out.println("黑人");
}
}
public class WhiteHuman implements Human
{
@Override
public void getColor()
{
System.out.println("白色");
}
@Override
public void talk()
{
System.out.println("白人");
}
}
public class YelloHuman implements Human
{
@Override
public void getColor()
{
System.out.println("黄色");
}
@Override
public void talk()
{
System.out.println("黄种人");
}
}
public class HumanFactory {
public static <T extends Human> T createHuman(Class<T> c) {
Human human = null;
try {
human = (Human) Class.forName(c.getName()).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return (T) human;
}
}
public class NvWa {
/**
* @param args
*/
public static void main(String[] args) {
Human white = HumanFactory.createHuman(WhiteHuman.class);
white.getColor();
white.talk();
Human black = HumanFactory.createHuman(BlackHuman.class);
black.getColor();
black.talk();
Human yellow = HumanFactory.createHuman(YelloHuman.class);
yellow.getColor();
yellow.talk();
}
}