参考:
https://blog.csdn.net/fan2012huan/article/details/51007517
https://www.ibm.com/developerworks/cn/java/j-lo-polymorph/