【抽象工厂模式】报错ClassCastException

1
2
// 直接产生一个实例(人类)
human = (Human)Class.forName(humanEnum.getValue()).newInstance();

上面一句报错:
Exception in thread “main” java.lang.ClassCastException: abstractfactory.yellowHuman.YellowMaleHuman cannot be cast to abstractfactory.Human

原因:
在AbstractYellowHuman类中,

1
2
3
4
5
6
package abstractfactory;

import factorymethod.Human
public abstract class AbstractYellowHuman implements Human{
……
}

应该是

1
2
3
4
package abstractfactory;

import abstractfactory.Human;
……